<div dir="ltr">Charlie,<div><br></div><div>You can commutate the motor phase from a rotary encoder. No need for Hall effect sensors. Just phase lock to a zero point and know (measure) the 120 degree phase angles. </div><div>I did much open loop motor control at IBM. It wasn't difficult and we did it with very simple controllers. It does pay to have a watchdog timer power-off all op amps in-case your SW debug locks up or runs away. I had our HW tech eventually create a socketed linear amp. Our HW engineer was an audiophile and said my SW brought tears to his eyes (not in a good way). </div><div><br></div><div>BTW, linear motes and steppers with microstepping can all be encoder-commutated and driven off 1 sinusoid table at 3 offsets. </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Oct 6, 2021 at 9:44 PM Charles West via TriEmbed <<a href="mailto:triembed@triembed.org">triembed@triembed.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>@Pete:</div><div>When you were working on it, did the motor you were using have hall effect sensors in it?  That's about all that makes me willing to try this.  In the worse case, I should be able to fall back to trapezoidal control based off of the hall effect sensors without any sort of fancy estimation.  I hope I can do better than that though.</div><div><br></div><div>@Carl&Rodney:</div><div>I've been actively looking through motor control gate drivers trying to find something that is simple enough I can work with it, available and capable enough.  So far, the best I've found is the STDRIVE101 (<a href="https://www.mouser.com/ProductDetail/STMicroelectronics/STDRIVE101?qs=xZ%2FP%252Ba9zWqYdY88AYx%252Blxg%3D%3D" target="_blank">https://www.mouser.com/ProductDetail/STMicroelectronics/STDRIVE101?qs=xZ%2FP%252Ba9zWqYdY88AYx%252Blxg%3D%3D</a>).  I'm bumbling my way through designing a test circuit for it now, but I would be the first to admit that I am rather terrible at analog electronics.</div><div><br></div><div>Thanks,</div><div>Charlie<br> </div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Oct 5, 2021 at 3:35 PM Carl Nobile via TriEmbed <<a href="mailto:triembed@triembed.org" target="_blank">triembed@triembed.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">So my bad, I read Charlie's email and missed the brushless part. I must have brushes in my mind.<div><br></div><div>So brushless DC motors are actually 3 phase synchronous AC motors, So three different PWM modulators are needed for each motor. Each PWM is 120 degrees out of sync with the others. and there can be absolutely no overlay on the others. There are special MCUs that are made for these motors. See the link below, it's for an older 8 bit MCU, but will give you an idea as to what needs to be done.</div><div><a href="http://ww1.microchip.com/downloads/en/devicedoc/atmel-7710-8-bit-microcontroller-at90pwm216-316_datasheet-summary.pdf" target="_blank">http://ww1.microchip.com/downloads/en/devicedoc/atmel-7710-8-bit-microcontroller-at90pwm216-316_datasheet-summary.pdf</a><br></div><div><br></div><div>~Carl</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Oct 5, 2021 at 12:55 PM Pete Soper via TriEmbed <<a href="mailto:triembed@triembed.org" target="_blank">triembed@triembed.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <p>I once got the idea I could control a brushless motor by being
      "clever" controlling set of drivers. I was mistaken. Without some
      means of sensing the behavior of the motor, whether it be back EMF
      or some other feedback it's about 99% of hopeless. Which is to say
      I was too stubborn to give up and managed to see the motor (from a
      server disk drive) spin, but if I squinted at it there was
      misbehavior.  A truly silly waste of time.</p>
    <p>-Pete<br>
    </p>
    <div>On 10/5/21 12:45, R Radford via
      TriEmbed wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">
        <div dir="ltr">Carl, Charles is looking for a brushless
          controller, not just a DC motor driver. Brushless motors are
          closer to a stepper motor than a regular DC motor, but the
          'steps' are controlled by sensing hall effect sensors to know
          when to step to keep the motor running smoothly.
          <div><br>
          </div>
          <div>They are great as they have less mechanical issues over
            time (no brushes to replace) and also produce less
            electrical noise. </div>
          <div><br>
          </div>
          <div>The circuit you show is a nice DC to PWM circuit that is
            similar to one I did many years ago, but now most (all?)
            microprocessors have built in hardware assist PWM so that
            part is already handled. The first time I used a similar
            circuit was controlling a robot from a 286 PC based robot
            where I used the parallel port to drive an R2R D/A circuit
            comparing against a triangle wave similar to your circuit.
            It worked great at the time, but now would not be needed. I
            still have that old hardware somewhere - perhaps I should
            pull it out and upgrade it.</div>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Tue, Oct 5, 2021 at 12:02
          PM Carl Nobile via TriEmbed <<a href="mailto:triembed@triembed.org" target="_blank">triembed@triembed.org</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div dir="ltr">Charly,
            <div><br>
            </div>
            <div>There are a few solutions to the controller problem. I
              designed an analog PWM circuit using op-amps and
              comparators that works great. You would also need an
              H-Bridge you would then need just one MCU board to control
              the PWM circuits then then control the H-Bridge circuits.</div>
            <div>My design is at: <a href="https://github.com/cnobile2012/VoltageControlledPWM" target="_blank">https://github.com/cnobile2012/VoltageControlledPWM</a></div>
            <div>My motors are fairly low current and voltage so the
              H-Bridges I'm using won't work for you, however MPJA.com
              has one in the link below, that will handle higher
              currents.</div>
            <div><a href="https://www.mpja.com/Dual-H-Bridge-DC-Motor-Driver/productinfo/35567+MP/" target="_blank">https://www.mpja.com/Dual-H-Bridge-DC-Motor-Driver/productinfo/35567+MP/</a><br>
            </div>
            <div>It will handle two motors and is only $22.95 ea. They
              give full docs on their site.</div>
            <div>My PWM board shou interface with it fine.</div>
            <div><br>
            </div>
            <div>~Carl</div>
          </div>
          <br>
          <div class="gmail_quote">
            <div dir="ltr" class="gmail_attr">On Sun, Oct 3, 2021 at
              11:16 PM Charles West via TriEmbed <<a href="mailto:triembed@triembed.org" target="_blank">triembed@triembed.org</a>>
              wrote:<br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
              <div dir="ltr">
                <div>Hello all!</div>
                <div><br>
                </div>
                <div>For the past 5 years or so, I've been working on a
                  open source low cost sidewalk delivery robot.  The
                  current draft (prototype picture: <a href="http://goodbot.ai/lib/exe/fetch.php?media=mk3draft1.jpg" target="_blank">http://goodbot.ai/lib/exe/fetch.php?media=mk3draft1.jpg</a>)
                  has 4 hoverboard style motors in a skid steer
                  arrangement.  Each robot will need 4 motor
                  controllers, which is one the big cost drivers right
                  now (even prior to the covid shortage, the controller
                  cost more than the motors).<br>
                </div>
                <div><br>
                </div>
                <div>My last stab at designing a brushless motor
                  controller failed spectacularly and the covid parts
                  shortage has also made the central parts of that
                  design completely unavailable.  In addition, the bulk
                  price for the motor controllers I've been using jumped
                  from $56 per to ~$100 per.</div>
                <div><br>
                </div>
                <div>Given that, I thought it might be time to get back
                  to the drawing board.  However, I am not an expert at
                  this sort of thing, so I thought it might be good to
                  post what I am thinking and see if I am completely off
                  the reservation.</div>
                <div><br>
                </div>
                <div>I'm currently using off-brand VESC motor
                  controllers (schematic for normal ones here: <a href="https://vesc-project.com/sites/default/files/Benjamin%20Posts/VESC_6.pdf" target="_blank">https://vesc-project.com/sites/default/files/Benjamin%20Posts/VESC_6.pdf</a>). 
                  They are great but do way more than I need.  They can
                  handle sensored and sensorless motors and be
                  reconfigured with MANY different options using a
                  desktop application.  I don't need to make something
                  that is easy to make work for lots of different motors
                  and I don't need to support sensorless operation.  I
                  just need to make something that works for my motors.</div>
                <div><br>
                </div>
                <div>The approach that the VESC takes is a central
                  microcontroller which talks with a (not currently
                  available) DRV8301 chip.  This chip in turn senses
                  voltage/current across each motor coil and drives 6
                  N-channel mosfets to control the motor (3 high side, 3
                  low side).  It does FOC control, which I believe is
                  state of the art in terms of smooth motor control. It
                  also integrates the 3 halls sensors that sensored
                  motors have if they are available.</div>
                <div><br>
                </div>
                <div>I'm having trouble finding any of these 6 mosfet
                  motor controller optimized gate drivers, so I am
                  thinking that I will just get some high side/low side
                  mosfet drivers (like maybe these: <a href="https://www.mouser.com/ProductDetail/STMicroelectronics/SRK2000A?qs=WHlX%252B%252B9%2FRwCG%2FkukabfLqA%3D%3D" target="_blank">https://www.mouser.com/ProductDetail/STMicroelectronics/SRK2000A?qs=WHlX%252B%252B9%2FRwCG%2FkukabfLqA%3D%3D</a>)
                  and some nice mosfets.  Particularly without dedicated
                  chips being available, I'm not going to try to do
                  current or voltage sensing.  I am thinking that I
                  would just PWM the 3 half bridges and try to do
                  sinusoidal motor control using a STM32 microcontroller
                  to drive it and the hall sensors in the motors to
                  estimate position relative to the coils.</div>
                <div><br>
                </div>
                <div>If I may ask, does this sound reasonable or am I
                  totally off base?</div>
                <div><br>
                </div>
                <div>Thanks,</div>
                <div>Charlie<br>
                </div>
              </div>
              _______________________________________________<br>
              Triangle, NC Embedded Computing mailing list<br>
              <br>
              To post message: <a href="mailto:TriEmbed@triembed.org" target="_blank">TriEmbed@triembed.org</a><br>
              List info: <a href="http://mail.triembed.org/mailman/listinfo/triembed_triembed.org" rel="noreferrer" target="_blank">http://mail.triembed.org/mailman/listinfo/triembed_triembed.org</a><br>
              TriEmbed web site: <a href="http://TriEmbed.org" rel="noreferrer" target="_blank">http://TriEmbed.org</a><br>
              To unsubscribe, click link and send a blank message:
              mailto:<a href="mailto:unsubscribe-TriEmbed@bitser.net" target="_blank">unsubscribe-TriEmbed@bitser.net</a>?subject=unsubscribe<br>
              <br>
            </blockquote>
          </div>
          <br clear="all">
          <div><br>
          </div>
          -- <br>
          <div dir="ltr">
            <div dir="ltr">--------------------------------------------------------------<br>
              Carl J. Nobile (Software Engineer/API Design)<br>
              <a href="mailto:carl.nobile@gmail.com" target="_blank">carl.nobile@gmail.com</a><br>
--------------------------------------------------------------</div>
          </div>
          _______________________________________________<br>
          Triangle, NC Embedded Computing mailing list<br>
          <br>
          To post message: <a href="mailto:TriEmbed@triembed.org" target="_blank">TriEmbed@triembed.org</a><br>
          List info: <a href="http://mail.triembed.org/mailman/listinfo/triembed_triembed.org" rel="noreferrer" target="_blank">http://mail.triembed.org/mailman/listinfo/triembed_triembed.org</a><br>
          TriEmbed web site: <a href="http://TriEmbed.org" rel="noreferrer" target="_blank">http://TriEmbed.org</a><br>
          To unsubscribe, click link and send a blank message: mailto:<a href="mailto:unsubscribe-TriEmbed@bitser.net" target="_blank">unsubscribe-TriEmbed@bitser.net</a>?subject=unsubscribe<br>
          <br>
        </blockquote>
      </div>
      <br>
      <fieldset></fieldset>
      <pre>_______________________________________________
Triangle, NC Embedded Computing mailing list

To post message: <a href="mailto:TriEmbed@triembed.org" target="_blank">TriEmbed@triembed.org</a>
List info: <a href="http://mail.triembed.org/mailman/listinfo/triembed_triembed.org" target="_blank">http://mail.triembed.org/mailman/listinfo/triembed_triembed.org</a>
TriEmbed web site: <a href="http://TriEmbed.org" target="_blank">http://TriEmbed.org</a>
To unsubscribe, click link and send a blank message: <a href="mailto:unsubscribe-TriEmbed@bitser.net?subject=unsubscribe" target="_blank">mailto:unsubscribe-TriEmbed@bitser.net?subject=unsubscribe</a>

</pre>
    </blockquote>
  </div>
_______________________________________________<br>
Triangle, NC Embedded Computing mailing list<br>
<br>
To post message: <a href="mailto:TriEmbed@triembed.org" target="_blank">TriEmbed@triembed.org</a><br>
List info: <a href="http://mail.triembed.org/mailman/listinfo/triembed_triembed.org" rel="noreferrer" target="_blank">http://mail.triembed.org/mailman/listinfo/triembed_triembed.org</a><br>
TriEmbed web site: <a href="http://TriEmbed.org" rel="noreferrer" target="_blank">http://TriEmbed.org</a><br>
To unsubscribe, click link and send a blank message: mailto:<a href="mailto:unsubscribe-TriEmbed@bitser.net" target="_blank">unsubscribe-TriEmbed@bitser.net</a>?subject=unsubscribe<br>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr">--------------------------------------------------------------<br>Carl J. Nobile (Software Engineer/API Design)<br><a href="mailto:carl.nobile@gmail.com" target="_blank">carl.nobile@gmail.com</a><br>--------------------------------------------------------------</div></div>
_______________________________________________<br>
Triangle, NC Embedded Computing mailing list<br>
<br>
To post message: <a href="mailto:TriEmbed@triembed.org" target="_blank">TriEmbed@triembed.org</a><br>
List info: <a href="http://mail.triembed.org/mailman/listinfo/triembed_triembed.org" rel="noreferrer" target="_blank">http://mail.triembed.org/mailman/listinfo/triembed_triembed.org</a><br>
TriEmbed web site: <a href="http://TriEmbed.org" rel="noreferrer" target="_blank">http://TriEmbed.org</a><br>
To unsubscribe, click link and send a blank message: mailto:<a href="mailto:unsubscribe-TriEmbed@bitser.net" target="_blank">unsubscribe-TriEmbed@bitser.net</a>?subject=unsubscribe<br>
<br>
</blockquote></div>
_______________________________________________<br>
Triangle, NC Embedded Computing mailing list<br>
<br>
To post message: <a href="mailto:TriEmbed@triembed.org" target="_blank">TriEmbed@triembed.org</a><br>
List info: <a href="http://mail.triembed.org/mailman/listinfo/triembed_triembed.org" rel="noreferrer" target="_blank">http://mail.triembed.org/mailman/listinfo/triembed_triembed.org</a><br>
TriEmbed web site: <a href="http://TriEmbed.org" rel="noreferrer" target="_blank">http://TriEmbed.org</a><br>
To unsubscribe, click link and send a blank message: mailto:<a href="mailto:unsubscribe-TriEmbed@bitser.net" target="_blank">unsubscribe-TriEmbed@bitser.net</a>?subject=unsubscribe<br>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature">Best regards,  Mike</div>