{"title":"Motors, Servos \u0026 Drivers","description":"\u003ch2\u003eMotors, Servos \u0026amp; Drivers – DC, Stepper \u0026amp; Servo Motors with Driver Modules\u003c\/h2\u003e\u003cp\u003ePower your robotics and automation projects with our comprehensive range of \u003cstrong\u003eDC motors, servo motors, stepper motors, and motor driver modules\u003c\/strong\u003e – compatible with Arduino, Raspberry Pi, and all microcontroller platforms.\u003c\/p\u003e\u003ch3\u003eWhat's in This Collection\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eServo Motors\u003c\/strong\u003e – SG90, SG92R, MG90S, MG995, MG996 micro and standard servos for RC, robotics, and Arduino projects\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eStepper Motors\u003c\/strong\u003e – 28BYJ-48 stepper motors with ULN2003A driver boards for precise angular control\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDC Motors\u003c\/strong\u003e – 3V hobby motors, TT gear motors, vibration motors, and high-torque worm gear motors\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMotor Driver Modules\u003c\/strong\u003e – L298N dual H-bridge, L293D, TB6612FBG, BTS7960 43A, VNH2SP30 monster motor drivers\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eStepper Motor Drivers\u003c\/strong\u003e – DRV8825, A4988 StepStick drivers with heat sinks for 3D printers and CNC machines\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePWM Speed Controllers\u003c\/strong\u003e – DC motor speed controllers 3V–36V 5A–90W with potentiometer adjustment\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eServo Controllers\u003c\/strong\u003e – PCA9685 16-channel 12-bit PWM servo driver modules for Arduino and Raspberry Pi\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRobot Wheels\u003c\/strong\u003e – Omnidirectional mecanum wheels for TT motor robot platforms\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eWhy Choose Keszoox?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e✅ 100+ motor \u0026amp; driver products in stock\u003c\/li\u003e\n\u003cli\u003e✅ Arduino, Raspberry Pi \u0026amp; 3D printer compatible\u003c\/li\u003e\n\u003cli\u003e✅ Bulk quantities available – ready to ship worldwide\u003c\/li\u003e\n\u003c\/ul\u003e","products":[{"product_id":"l293d-v1-motor-driver-shield","title":"L293D V1 Motor Driver Shield for Arduino — 4 DC \/ 2 Stepper Motors","description":"\u003ch2\u003eL293D V1 Motor Driver Shield for Arduino — 4 DC \/ 2 Stepper Motors\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eL293D motor driver shield\u003c\/strong\u003e stacks directly onto Arduino Uno or Mega and enables control of up to \u003cstrong\u003e4 DC motors\u003c\/strong\u003e or \u003cstrong\u003e2 stepper motors\u003c\/strong\u003e (or a combination). Uses two \u003cstrong\u003eL293D H-bridge driver ICs\u003c\/strong\u003e with built-in flyback diodes for motor protection. Controlled via I2C using the \u003cstrong\u003eAdafruit Motor Shield library\u003c\/strong\u003e, freeing up Arduino digital pins.\u003c\/p\u003e\n\n\u003ch3\u003eKey Specifications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDriver IC: \u003cstrong\u003eL293D ×2\u003c\/strong\u003e | Channels: \u003cstrong\u003e4 DC motor or 2 stepper motor\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eCurrent: \u003cstrong\u003e0.6A per channel\u003c\/strong\u003e (1.2A peak) | Motor voltage: \u003cstrong\u003e4.5–25V\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eInterface: \u003cstrong\u003eI2C (74HC595 shift register)\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eServo headers: \u003cstrong\u003e2× servo PWM headers\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eCompatible: \u003cstrong\u003eArduino Uno \/ Mega\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eLibrary: \u003cstrong\u003eAdafruit Motor Shield V1\u003c\/strong\u003e | Compliance: \u003cstrong\u003eRoHS compliant\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eWhy Choose This?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ \u003cstrong\u003e4 DC or 2 stepper motors\u003c\/strong\u003e — versatile motor control in one shield\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eBuilt-in flyback diodes\u003c\/strong\u003e — protects Arduino from motor back-EMF\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eI2C control\u003c\/strong\u003e — frees up Arduino digital pins for other uses\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eAdafruit library compatible\u003c\/strong\u003e — extensive tutorials and community support\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTypical Applications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWheeled robot and rover motor control\u003c\/li\u003e\n\u003cli\u003eStepper motor positioning projects\u003c\/li\u003e\n\u003cli\u003eArduino robotics learning projects\u003c\/li\u003e\n\u003cli\u003eConveyor and automation motor control\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45666021507307,"sku":"","price":21.22,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/L293D-V1-Motor-Driver-Shield-1.jpg?v=1723010258"},{"product_id":"l298p-motor-driver-shield","title":"L298P Motor Driver Shield for Arduino — 2A Dual DC \/ Stepper","description":"\u003ch2\u003eL298P Motor Driver Shield for Arduino — 2A Dual DC \/ Stepper\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eL298P motor driver shield\u003c\/strong\u003e stacks directly onto Arduino Uno or Mega and enables control of up to \u003cstrong\u003e2 DC motors\u003c\/strong\u003e or \u003cstrong\u003e1 stepper motor\u003c\/strong\u003e at \u003cstrong\u003e2A per channel\u003c\/strong\u003e. Uses the \u003cstrong\u003eL298P H-bridge driver IC\u003c\/strong\u003e with PWM speed control and direction control via Arduino digital pins. Higher current capacity than L293D-based shields — suitable for larger DC motors.\u003c\/p\u003e\n\n\u003ch3\u003eKey Specifications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDriver IC: \u003cstrong\u003eL298P\u003c\/strong\u003e | Channels: \u003cstrong\u003e2 DC motor or 1 stepper motor\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eCurrent: \u003cstrong\u003e2A per channel\u003c\/strong\u003e (3A peak) | Motor voltage: \u003cstrong\u003e6.5–12V\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eControl: \u003cstrong\u003ePWM speed + direction via Arduino digital pins\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eServo headers: \u003cstrong\u003e2× servo PWM headers\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eCompatible: \u003cstrong\u003eArduino Uno \/ Mega\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eCompliance: \u003cstrong\u003eRoHS compliant\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eWhy Choose This?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ \u003cstrong\u003e2A per channel\u003c\/strong\u003e — higher current than L293D shields for larger motors\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003ePWM speed control\u003c\/strong\u003e — smooth variable speed control via analogWrite()\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eDirect stack onto Arduino\u003c\/strong\u003e — no wiring needed\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eServo headers included\u003c\/strong\u003e — connect servos alongside DC motors\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTypical Applications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWheeled robot and rover motor control\u003c\/li\u003e\n\u003cli\u003eStepper motor positioning projects\u003c\/li\u003e\n\u003cli\u003eArduino motor control learning projects\u003c\/li\u003e\n\u003cli\u003eConveyor and automation motor control\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45666023604459,"sku":"","price":54.87,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/L298P-Dual-Motor-Driver-Shield.jpg?v=1723010237"},{"product_id":"servo-extension-cable-male-female-20cm-3-pin","title":"Servo Extension Cable Male\/Female — 20cm, 3-Pin 2.54mm","description":"\u003ch2\u003eServo Extension Cable Male\/Female — 20cm, 3-Pin 2.54mm\u003c\/h2\u003e\n\u003cp\u003eA \u003cstrong\u003e20cm servo extension cable\u003c\/strong\u003e with a \u003cstrong\u003e3-pin 2.54mm male connector\u003c\/strong\u003e on one end and a \u003cstrong\u003e3-pin 2.54mm female connector\u003c\/strong\u003e on the other. Extend servo leads to reach Arduino servo headers, PWM controllers, and RC receivers. Color-coded for easy identification: \u003cstrong\u003eSignal (orange\/yellow) \/ VCC (red) \/ GND (brown\/black)\u003c\/strong\u003e.\u003c\/p\u003e\n\n\u003ch3\u003eKey Specifications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eType: \u003cstrong\u003eMale \/ Female (M-F)\u003c\/strong\u003e | Pins: \u003cstrong\u003e3\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eLength: \u003cstrong\u003e20cm\u003c\/strong\u003e | Pitch: \u003cstrong\u003e2.54mm\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eColor-coded: \u003cstrong\u003eSignal \/ VCC \/ GND\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eCompatible: \u003cstrong\u003eStandard RC servo \/ Arduino servo headers\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eCompliance: \u003cstrong\u003eRoHS compliant\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTypical Applications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExtending servo leads to Arduino servo shield\u003c\/li\u003e\n\u003cli\u003eRC model servo extension cable\u003c\/li\u003e\n\u003cli\u003eRobotics servo wiring extension\u003c\/li\u003e\n\u003cli\u003ePCA9685 servo controller wiring\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45670847316203,"sku":"","price":8.47,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/Servo-Male-to-Female-Extension-Cable-20cm.jpg?v=1723009131"},{"product_id":"l293d-dual-h-bridge-motor-driver","title":"L293D Dual H-Bridge Motor Driver","description":"\u003cp\u003e\u003cspan\u003eGeneral purpose driver handles 4.5 – 36V @ 600mA\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe L293D Dual H-Bridge Motor Driver is a general purpose high voltage \/ high current driver that can handle 4.5 – 36V @ 600mA continuous per channel\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eL293D Dual H-Bridge Motor Driver\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003e\u003cstrong\u003eKEY FEATURES OF L293D DUAL H-BRIDGE MOTOR DRIVER:\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eContains four half H-Bridges that can operate as two full H-Bridges\u003c\/li\u003e\n\u003cli\u003eOperate 2 motors with direction and speed control or 4 motors with speed control only\u003c\/li\u003e\n\u003cli\u003eCan supply 600mA current per channel continuous and 1.2A peak\u003c\/li\u003e\n\u003cli\u003e4.5 to 36V motor voltage\u003c\/li\u003e\n\u003cli\u003e5V compatible on logic pins\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe L293D is a general purpose high voltage \/ high current driver  that can handle up to 600mA per channel (1.2A peak non-repetitive) and can operate over the range of 4.5 – 36V.  The chip includes built-in kick-back diodes to prevent damage when the motor is de-energized.\u003c\/p\u003e\n\u003cp\u003eThese devices are most often used to drive motors, but they can also be used to drive any inductive load such as relay solenoids or used to drive large switching power transistors.\u003c\/p\u003e\n\u003ch3\u003eHalf-Bridge vs Full-Bridge\u003c\/h3\u003e\n\u003cp\u003eThe chip contains four half H-Bridges that can be operated that way or can also be operated as two full H-Bridges.  They are capable of driving up to 4 solenoids, 4 uni-directional DC motors, 2 bi-directional DC motors or 1 stepper motor.\u003cimg decoding=\"async\" class=\"alignright size-full wp-image-5528 entered lazyloaded\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Pinout.jpg\" alt=\"L293D Pinout\" width=\"344\" height=\"197\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Pinout.jpg 344w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Pinout-200x115.jpg 200w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Pinout-300x172.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Pinout-280x160.jpg 280w\" data-lazy-sizes=\"(max-width: 344px) 100vw, 344px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Pinout.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 344px) 100vw, 344px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Pinout.jpg 344w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Pinout-200x115.jpg 200w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Pinout-300x172.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Pinout-280x160.jpg 280w\"\u003e\u003c\/p\u003e\n\u003cp\u003eA half H-Bridge configuration allows a motor to be operated in one direction.  the Enable pins allow the motor to be turned ON\/OFF or speed regulated by applying a PWM signal to these pins.  The Enable pins are shared between channels 1\u0026amp;2 and 3\u0026amp;4 which limits the usefulness of this mode.\u003c\/p\u003e\n\u003cp\u003eA full H-Bridge configuration allows a DC motor to be run in both directions by reversing the current flow through the motor.  The Enable pins allow the motors to be turned ON\/OFF or speed regulated by applying a PWM signal to these pins.  This is the most common mode of operation.\u003c\/p\u003e\n\u003cp\u003eIf higher output current is required, the outputs can be run in parallel to get drive currents of up to 1.2A.  When paralleling outputs, channel 1 \u0026amp; 4 should be paralleled and channel 2 \u0026amp; 3 should be paralleled.  It is also possible to piggy-back a second chip on top of the first and solder the pins together to maintain full two H-Bridge functionality while also doubling the current handling to 1.2A.\u003c\/p\u003e\n\u003ch3\u003eUnidirectional DC Motor Control (using half H-Bridge)\u003c\/h3\u003e\n\u003cp\u003eThis table covers 1 of the 4 half H-Bridges in the device.  1A channel is shown but all 4 channels (1A\/2A\/3A\/4A) behave the same.  Note that the EN pins are shared between Channels 1\u0026amp;2 and 3\u0026amp;4.\u003c\/p\u003e\n\u003cp\u003eAlso, note that is in this half bridge configuration, one side of the motor will be connected directly to power or ground, so the direction control pins (1A in this case) will have the opposite effect depending on how the motor is wired.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ctable class=\"table table-bordered\" width=\"1029\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"95\"\u003e\u003cstrong\u003eEN\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"95\"\u003e\u003cstrong\u003e1A\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"203\"\u003e\u003cstrong\u003eFunction (Motor connected to VCC2)\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"203\"\u003e\u003cstrong\u003eFunction (Motor connected to Ground)\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"95\"\u003eH\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eL\u003c\/td\u003e\n\u003ctd width=\"203\"\u003eMotor Run\u003c\/td\u003e\n\u003ctd width=\"203\"\u003eFast Motor Stop\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"95\"\u003eH\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eH\u003c\/td\u003e\n\u003ctd width=\"203\"\u003eFast Motor Stop\u003c\/td\u003e\n\u003ctd width=\"203\"\u003eMotor Run\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"95\"\u003eL\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eX\u003c\/td\u003e\n\u003ctd width=\"203\"\u003eFree-running Motor Stop\u003c\/td\u003e\n\u003ctd width=\"203\"\u003eFree-running Motor Stop\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003eBidirectional DC Motor Control (using full H-Bridge)\u003c\/h3\u003e\n\u003cp\u003eThis truth table covers the left half of the chip which forms one full H-Bridge.  The right side is a duplicate with 1A and 2A replaced with 3A and 4A.\u003c\/p\u003e\n\u003ctable class=\"table table-bordered\" width=\"661\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"95\"\u003e\u003cstrong\u003eEN\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"95\"\u003e\u003cstrong\u003e1A\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"95\"\u003e\u003cstrong\u003e2A\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"191\"\u003e\u003cstrong\u003eFunction\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"95\"\u003eH\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eL\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eH\u003c\/td\u003e\n\u003ctd width=\"191\"\u003eMotor Turn Right\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"95\"\u003eH\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eH\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eL\u003c\/td\u003e\n\u003ctd width=\"191\"\u003eMotor Turn Left\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"95\"\u003eH\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eL\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eL\u003c\/td\u003e\n\u003ctd width=\"191\"\u003eFast Motor Stop\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"95\"\u003eH\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eH\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eH\u003c\/td\u003e\n\u003ctd width=\"191\"\u003eFast Motor Stop\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"95\"\u003eL\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eX\u003c\/td\u003e\n\u003ctd width=\"95\"\u003eX\u003c\/td\u003e\n\u003ctd width=\"191\"\u003eFree-Running Motor Stop\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003eConnecting Power\u003c\/h3\u003e\n\u003cp\u003eTake note that there are two power pins which are marked various ways depending on what datasheet you are looking at.  The important thing to remember is that pin 16 is the logic power and needs to be connected to 5V which can come from the uC or separate power supply.   Pin 8 is the motor power and can vary between 4.5 and 36V.\u003c\/p\u003e\n\u003cp\u003eThe IC package has 4 ground pins.  These are all connected internally and are used to help heat sink the chip when soldered to a PCB ground plane and handle the current under high load conditions.  For experimenting under light loads, only one needs to be connected.\u003c\/p\u003e\n\u003chr\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eThese are old school devices, but they are easy to use, inexpensive, robust and get the job done when working with motors that don’t require a lot of current.\u003c\/p\u003e\n\u003ch3\u003eQuick Breadboard Control Example\u003c\/h3\u003e\n\u003cp\u003eTo get a feel for how the IC works in the full H-Bridge arrangement that allows for DC motor operation in both directions, do the following exercise:\u003cimg decoding=\"async\" class=\"size-full wp-image-4726 alignright entered lazyloaded\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic.jpg\" alt=\"L293D Schematic\" width=\"495\" height=\"248\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic.jpg 495w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic-400x200.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic-350x175.jpg 350w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic-300x150.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic-280x140.jpg 280w\" data-lazy-sizes=\"(max-width: 495px) 100vw, 495px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 495px) 100vw, 495px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic.jpg 495w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic-400x200.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic-350x175.jpg 350w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic-300x150.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/L293D-Schematic-280x140.jpg 280w\"\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003eConnect 5V to  both pins 8 and 16. These are the motor and digital power pins respectively.\u003c\/li\u003e\n\u003cli\u003eConnect one of the ground pins (like pin 4) to ground. There are 4 pins, but only one needs to be connected for this exercise.\u003c\/li\u003e\n\u003cli\u003eConnect a smaller DC motor that draws less than 600mA to pins 3 and 6 (\u003cstrong\u003e1Y\/2Y\u003c\/strong\u003e).  These are the two motor driver outputs for one of the channels.\u003c\/li\u003e\n\u003cli\u003eApply 5V power and nothing will happen because we haven’t told the motor which direction to turn yet.\u003c\/li\u003e\n\u003cli\u003eConnect jumper wires to pins 2 \u0026amp; 7 which are the\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003e1A\/2A\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003econtrol pins for this full-bridge.\u003c\/li\u003e\n\u003cli\u003eConnect the other end of one of the wires to ground and the other wire to 5V.  The motor should start turning.\u003c\/li\u003e\n\u003cli\u003eNow swap the power and ground connections to these 2 wires and the motor should start turning in the opposite direction,\u003c\/li\u003e\n\u003cli\u003eFrom this we learn that we can control the motor direction using logic levels on these two pins as per the logic truth table above.\u003c\/li\u003e\n\u003cli\u003eNow connect a jumper wire to pin 1 (\u003cstrong\u003e1\u0026amp;2 EN\u003c\/strong\u003e). This pin is active HIGH.  If this jumper is connected to ground, the motor should stop.  If it is connected to 5V or simply left floating, the motor should run.  If you were quick enough you could plug this jumper in and out of the ground connection really fast and control the speed of the motor by momentarily enabling\/disabling the drive to it.   Using a PWM pin on a uC automates this process and allows us to control the speed of the motor under program control which we’ll do below.\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003ch3\u003eHooking the L293D up to a uC\u003c\/h3\u003e\n\u003cp\u003eTo take our simple setup to the next level, the program below automates the control of the basic setup above using an Arduino or similar uC and gives you control of the motor through the Arduino IDE Serial Monitor window by entering commands.  Your just need to connect the 1A\/2A and EN control pins on the IC to pins 9, 8 and 10 on an uC.  You can use other digital pins, just make sure that you redefine them in the program.  The EN pin does need to be connected to a PWM capable pin.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe valid commands to type into the Serial Monitor Window include:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eF\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Motor FORWARD\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eR\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Motor REVERSE\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eS\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Motor STOP\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eP\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Short for PWM, it sets or gets the motor speed.  P by itself does nothing.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e     P?\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Get the current speed setting from the uC\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e     P1\u003c\/strong\u003e –\u003cstrong\u003eP255\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Sets the PWM value which controls the speed of the motor.  This needs to all be typed on the same line before hitting ‘Send’ or the RETURN key to transmit  the command to the uC.\u003c\/p\u003e\n\u003cp\u003eNote that at low value speed settings like\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003eP5\u003c\/strong\u003e, the motor will not turn because it is not getting enough power, but you may hear it whining a bit.  This varies by motor and the voltage that your are driving it at.   If 5V is too low for your motor, you can change the voltage on pin 8 to a higher value or just stick with higher PWM values.  You may have to use values in the range of\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003eP25-50\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eto get things moving.\u003c\/p\u003e\n\u003cp\u003eThe directions of ‘\u003cstrong\u003eF\u003c\/strong\u003e‘orward and ‘\u003cstrong\u003eR\u003c\/strong\u003e‘everse are relative to how the motor is wired to the L293D.  The wires to the motor can be swapped if it is desired to reverse the direction relative to the commands being given.\u003c\/p\u003e\n\u003cp\u003eThe program is somewhat simplistic to keep it reasonably short.  If the PWM value is zero, it assumes this is because the number given could not be converted to an integer and ignores it.  This means you can’t send the command ‘\u003cstrong\u003eP0\u003c\/strong\u003e‘ to stop the motor because it will be ignored.  Use the ‘\u003cstrong\u003eS\u003c\/strong\u003e‘ command instead.\u003c\/p\u003e\n\u003ch3\u003eUsing The Serial Monitor Window To Send Commands\u003c\/h3\u003e\n\u003cp\u003eUsually the Serial Monitor window is used only for displaying returned characters from the Arduino.  Since we are using it also for input, it is worth noting a few things.\u003c\/p\u003e\n\u003cp\u003eWhen using the Serial Monitor window for input, the commands need to be typed into the small top window, not the main window.  A carriage return or hitting the ‘\u003cstrong\u003eSend\u003c\/strong\u003e‘ button sends the command typed into this window to the Arduino.\u003c\/p\u003e\n\u003cp\u003eThe program echos the command (like ‘\u003cstrong\u003eR\u003c\/strong\u003e‘) back to the main window.  This is confirmation that the command was received by the Arduino.  It then sends a string of what it is doing with that command (like ‘\u003cstrong\u003eMotor Reverse\u003c\/strong\u003e‘)  as confirmation that it not only received the command but also understood and executed the command.\u003c\/p\u003e\n\u003cp\u003eMake sure the baud rate is set to the rate you have set in the program.   Program sets it to a default of\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003e9600\u003c\/strong\u003e.\u003c\/p\u003e\n\u003cp\u003eOn my setup I find that if the default ‘\u003cstrong\u003eBoth NL \u0026amp; CR\u003c\/strong\u003e‘ setting is used at the bottom of the Serial Monitor window, the window tends to hang intermittently.  Commands are still be sent and acted on by the Arduino, but the output from the Arduino stops being shown.  Closing and reopening the windows temporarily clears the problem.  Using ‘\u003cstrong\u003eCarriage return\u003c\/strong\u003e‘ seems to work fine.  I am not sure why that is.\u003c\/p\u003e\n\u003ch3\u003eL293D Dual H-Bridge Motor Driver Example Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003eExercise L293 Motor Driver IC\u003c\/span\u003e\n\u003cspan\u003eUses Serial Monitor window to issue commands for controlling a DC motor \u003c\/span\u003e\n\u003cspan\u003econnected to channels 1 \u0026amp; 2 on an L293D chip.\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eEN_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e10\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Must be PWM pin.  Connect to Pin 1 on L293\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eA1_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e    \u003cspan\u003e\/\/ Can by any digital pin.  Connect to pin 2 on L293\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eA2_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e8\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e    \u003cspan\u003e\/\/ Can by any digital pin.  Connect to pin 7 on L293\u003c\/span\u003e\n\n\u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003e4\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ String array to hold PWM value typed in on keyboard\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ePWM_Value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/ Our current PWM motor speed value\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eEN_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Initialize output pins\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eA1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eA2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e9600\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e       \u003cspan\u003e\/\/ Initialize serial monitor\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n\u003cspan\u003e\/\/ Basically just loop while monitoring the serial port and then jump to DoSerial to\u003c\/span\u003e\n\u003cspan\u003e\/\/ handle incoming characters and act on them\u003c\/span\u003e\n\u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eavailable\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003eDoSerial\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Subroutine to handle characters typed via Serial Monitor Window\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eDoSerial\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eindex\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ePWM_Test_Value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003ech\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eread\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Read the character we know we have\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ech\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e       \u003cspan\u003e\/\/ Echo character typed to show we got it\u003c\/span\u003e\n\n  \u003cspan\u003e\/\/ Use Switch\/Case statement to handle the different commands\u003c\/span\u003e\n  \u003cspan\u003eswitch\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ech\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'f'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Motor FORWARD command\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ This fall-through case statement accepts upper and lower case\u003c\/span\u003e\n    \u003cspan\u003edigitalWrite\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eA1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edigitalWrite\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eA2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motor Forward\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'r'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Motor REVERSE command\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003edigitalWrite\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eA1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edigitalWrite\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eA2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motor Reverse\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n   \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e's'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Motor STOP command\u003c\/span\u003e\n   \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'S'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003e\/\/digitalWrite(EN_PIN, LOW);\u003c\/span\u003e\n    \u003cspan\u003edigitalWrite\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eA1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edigitalWrite\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eA2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motor Stop\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'p'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e  \u003cspan\u003e\/\/ Motor SPEED command\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'P'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003e\/\/ This command is a little trickier.  We are looking for a number from 0-255\u003c\/span\u003e\n    \u003cspan\u003e\/\/ to follow this command so we can set the PWM speed.  If we see a '?'\u003c\/span\u003e\n    \u003cspan\u003e\/\/ we will report our current speed setting, otherwise we start collecting chars\u003c\/span\u003e\n    \u003cspan\u003e\/\/ into the readString array.\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Give time for more characters to arrive.\u003c\/span\u003e\n    \u003cspan\u003efor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e\u0026lt;\u003c\/span\u003e\u003cspan\u003e4\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e' '\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Clear buffer\u003c\/span\u003e\n    \u003cspan\u003ewhile\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eavailable\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e  \u003cspan\u003e\/\/ Read what we get and put into the string array\u003c\/span\u003e\n    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003ec\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eread\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003eindex\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003ec\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003eindex\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003e3\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e''\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Append null to end of string array to make it a valid string\u003c\/span\u003e\n    \u003cspan\u003eindex\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e            \u003cspan\u003e\/\/ Reset our index back to the start of the string\u003c\/span\u003e\n    \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003eindex\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'?'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e   \u003cspan\u003e\/\/ ? means report our current speed setting and exit.\u003c\/span\u003e\n    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Current PWM Setting: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWM_Value\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003ePWM_Test_Value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eatoi\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Try to convert string into integer\u003c\/span\u003e\n    \u003cspan\u003e\/\/ We assume a 0 value is because of a non-valid input and ignore the command\u003c\/span\u003e\n    \u003cspan\u003eif\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWM_Test_Value\u003c\/span\u003e\u003cspan\u003e!=\u003c\/span\u003e\u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e   \n      \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWM_Test_Value\u003c\/span\u003e \u003cspan\u003e\u0026gt;\u003c\/span\u003e \u003cspan\u003e255\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003ePWM_Value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e255\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e     \u003cspan\u003e\/\/ Cap WPM setting at 255\u003c\/span\u003e\n      \u003cspan\u003eelse\u003c\/span\u003e \u003cspan\u003ePWM_Value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003ePWM_Test_Value\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWM_Value\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e        \u003cspan\u003e\/\/ Echo what we end up with to confirm we got it\u003c\/span\u003e\n      \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eEN_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003ePWM_Value\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/ Set new speed on PWM pin.\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \n  \u003cspan\u003edefault\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e10\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eTECHNICAL SPECIFICATIONS\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"703\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003e Operational Ratings\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eVcc2 (Motor)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e4.5-36V\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eVcc1 (Internal Logic)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e5V\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMax Current\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e600mA  (per channel)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMax Current  (non-repetitive)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e1.2A   (per Channel)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eVcc1 Max Current\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e60mA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003ePackage\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eDIP-16\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003ePackage Type\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003ePlastic, thru-hole\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eMfr\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eTI \/ ST\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eDatasheet\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003ca href=\"http:\/\/www.ti.com\/lit\/ds\/symlink\/l293.pdf\" rel=\"noopener\" target=\"_blank\"\u003e\u003cspan\u003e\u003cstrong\u003eL293D\u003c\/strong\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45674462970091,"sku":"","price":4.87,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/L293D-Motor-Driver-IC-1.jpg?v=1723007439"},{"product_id":"3v-dc-1027-flat-vibration-motor-5-pack","title":"3V DC 1027 Flat Vibration Motor (5-Pack)","description":"\u003cp\u003e\u003cspan\u003eSmall 10 x 2.7mm flat vibration motors can be used to provide vibration feedback like in a cell phone and can be useful in a number of applications.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThese small 10 x 2.7mm flat vibration motors can be used to provide vibration feedback like in a cell phone and can be useful in a number of applications like bristlebots.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eQty 5 – 3V DC Flat Vibration Motor\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF 3V DC FLAT VIBRATION MOTOR:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSmall 10mm diameter x 2.7mm high\u003c\/li\u003e\n\u003cli\u003e2cm leads with glue strain relief\u003c\/li\u003e\n\u003cli\u003eAdhesive back for mounting\u003c\/li\u003e\n\u003cli\u003e1.5 to 4VDC operation range\u003c\/li\u003e\n\u003cli\u003e80mA current draw @ 3V typical.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe motors operate by using voice coils to rotate an internal disc that has an offset counter-balance and hence causes a vibration as it rotates.\u003c\/p\u003e\n\u003cp\u003eThese devices are also sometimes called pancake motors and were designed for cell phones and pagers to provide vibration as a form of haptic feedback, but they can be used in a number of other  interesting applications.\u003c\/p\u003e\n\u003cp\u003eA popular use is with bristlebots, where the vibration motor is attached to the back of a small bristle brush and powered from a 3V coin battery cell. The vibration causes the bristlebot to move around on a smooth surface. This can be a fun introduction to robotics for younger kids.\u003c\/p\u003e\n\u003cp\u003eThe vibration can also be used in applications such as game play like the old operation game to provide tactile feedback when the buzzer sounds or to add a vibration to a small feeder mechanism to help things move along a feeder chute.\u003ca href=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game.jpg\"\u003e\u003cimg decoding=\"async\" class=\"alignright size-medium wp-image-9852 entered lazyloaded\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game-300x225.jpg\" alt=\"Zombie Operation Game\" width=\"300\" height=\"225\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game-249x187.jpg 249w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game.jpg 800w\" data-lazy-sizes=\"(max-width: 300px) 100vw, 300px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game-300x225.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 300px) 100vw, 300px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game-249x187.jpg 249w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/11\/Zombie-Operation-Game.jpg 800w\"\u003e\u003c\/a\u003e\u003c\/p\u003e\n\u003cp\u003eHere is a zombie operation game we made one year for my wife’s company Halloween party.  She is testing it on the coffee table in her evil doctor costume.\u003c\/p\u003e\n\u003cp\u003eThe vibration motor was attached to the handle of a large pair of tweezers so that when the tweezers touched the sides, the motor would vibrate the tweezers while at the same time the LEDs flashed and the zombie eyes turned red while it roared in pain.  The overall effect was quite good.\u003c\/p\u003e\n\u003cp\u003eThe motor is designed to run at 3V nominal. At lower voltages such as 1.5v, the motor works but the vibration is weaker. At 4V the vibration is quite strong.  These motors are designed for intermittent use.  That becomes more important as the voltage increases.\u003c\/p\u003e\n\u003cp\u003eThe back of the motor has adhesive with a liner so that it can be easily mounted. The front has a thin layer of rubber to prevent rattling against an adjacent surface\u003c\/p\u003e\n\u003cp\u003e1.5 to 4VDC Power is supplied via small red\/black wires.  The red wire connects to the positive voltage, black connects to ground.  The wires have a dab of epoxy to help strain relieve them at the motor body.\u003c\/p\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eThese pack a fairly strong vibration for their size.\u003c\/p\u003e\n\u003cp\u003eThe wire leads are small gauge, appearing to be about 30AWG, so be prepared to break out the reading glasses to hook things up.  Soldering will likely be required.\u003c\/p\u003e\n\u003cp\u003eAlso keep in mind that the whole purpose of the device is to create a vibration, so be sure to stabilize the leads to avoid constant flexing which can result in lead breakage.  Taping them down with something like Kapton tape often works well for this purpose.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003e\u003cstrong\u003eTECHNICAL SPECIFICATIONS\u003c\/strong\u003e\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"762\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e \u003cstrong\u003eOperating Ratings\u003c\/strong\u003e\n\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotor Voltage\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e1.5 – 4VDC  (3V typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotor Current  (typical @ 3V)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e80mA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eDimensions\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotor ( Dia x H)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e10 x 2.7mm ( 0.4 x 0.1″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eLead Length\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e2cm (0.8″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681515987179,"sku":"","price":7.37,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/3V-DC-1027-Vibration-Motor-5-Pack.jpg?v=1723005727"},{"product_id":"dc-motor-and-wheel-set","title":"DC Motor and Wheel Set","description":"\u003cp\u003e\u003cspan\u003eBasic 3-12V DC Motor, Wheel and mount set for motorized platform.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe DC Motor and Wheel Set is the same motor and wheel sets that come with our basic smart car chassis.  We offer them separately for use in constructing your own mobile platform.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e3-12V geared DC motor\u003c\/li\u003e\n\u003cli\u003e66mm tall wheel\u003c\/li\u003e\n\u003cli\u003eAluminum motor mount with M3 screws and nuts for mounting\u003c\/li\u003e\n\u003cli\u003eRed\/black 24AWG hook wires, 15cm long\u003c\/li\u003e\n\u003cli\u003eZip tie for strain relieving the wires\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe motors are DC motors that will work between 3-12VDC.  Speed of rotation will depend on the drive voltage and whether a PWM motor controller is added for speed and direction control.\u003c\/p\u003e\n\u003cp\u003eThe tires can be mounted to either side of the motor for mounting flexibility.   They are a simple press fit.\u003c\/p\u003e\n\u003cp\u003eThe motor has 2 small screw holes with a spacing of 17.3mm that can be used for mounting.  We also include an aluminum mounting bracket with two M3 x 30mm screws and nuts for attaching to the motor and two M3 x 8mm screws for mounting the bracket to the chassis.\u003c\/p\u003e\n\u003cp\u003e\u003cimg decoding=\"async\" class=\"aligncenter wp-image-10856 size-full entered lazyloaded\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/Aluminum-Motor-Bracket-Dimensions.jpg\" alt=\"Aluminum Motor Bracket Dimensions\" width=\"516\" height=\"232\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/Aluminum-Motor-Bracket-Dimensions.jpg 516w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/Aluminum-Motor-Bracket-Dimensions-300x135.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/Aluminum-Motor-Bracket-Dimensions-280x126.jpg 280w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/Aluminum-Motor-Bracket-Dimensions-400x180.jpg 400w\" data-lazy-sizes=\"(max-width: 516px) 100vw, 516px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/Aluminum-Motor-Bracket-Dimensions.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 516px) 100vw, 516px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/Aluminum-Motor-Bracket-Dimensions.jpg 516w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/Aluminum-Motor-Bracket-Dimensions-300x135.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/Aluminum-Motor-Bracket-Dimensions-280x126.jpg 280w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/03\/Aluminum-Motor-Bracket-Dimensions-400x180.jpg 400w\"\u003e\u003c\/p\u003e\n\u003cp\u003eThe package also includes a pair of 15cm (6″) long red and black 24 AWG wires for connecting power to the two solder tabs on the motor.\u003c\/p\u003e\n\u003cp\u003eReversing these wires reverses the direction of rotation, so is somewhat arbitrary as to which color wire is soldered to which tab as the notion of ‘forward’ will depend on how the motor is mounted and which side of the vehicle it is on.  A zip tie is included to secure the wires to the motor body after soldering them in place to help take the strain off the solder tab connections as these can break if they are repeatedly flexed.\u003c\/p\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eThese DC motor and wheel sets are an inexpensive way to motorize a platform to experiment with robotic control.  Some of the gears are nylon, but they have held up well in our testing.\u003c\/p\u003e\n\u003cp\u003eThe motors do tend to run on the fast side when powered straight off of DC voltage, so unless you are building a speed racer, you should plan on either running the motors at a lower voltage if driving them directly or use a motor controller.  At 3VDC, the motors run at about 100RPM with a medium load.  We recommend using a motor controller that can be used to control the speed of the motor by using PWM and also allow for reversing direction of the motors.  Several options are shown below, but we have a number of other options available as well.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003e\u003cstrong\u003eTECHNICAL SPECIFICATIONS\u003c\/strong\u003e\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"765\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Operating Ratings\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Voltage\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e3 – 12VDC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Current\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e140mA (typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Gear Reduction Ratio\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e1:48\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Motor Speed\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e 5V (No Load)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e180 RPM\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e 3V (No Load)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e120 RPM\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Dimensions\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eTires (H x W)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e66 x 25mm (2.6 x 1″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor (L x W X H)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e70 x 22 x 18mm (2.8 x 0.9 x 0.7″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681522639083,"sku":"","price":8.12,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/DC-Geared-Motor-and-Wheel-Set-1.jpg?v=1723005690"},{"product_id":"drv8825-high-current-stepper-motor-driver-module","title":"DRV8825 High Current Stepper Motor Driver Module","description":"\u003cp\u003e\u003cspan\u003eBi-polar stepper motor driver that can handle up to 2.2A\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe DRV8825 High Current Stepper Motor Driver Module can drive one bipolar stepper motor of up to 2.2A.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDRV8825 High Current Stepper Motor Driver Module\u003c\/li\u003e\n\u003cli\u003eHeatsink with 3M double-stick adhesive applied.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF DRV8825 HIGH CURRENT STEPPER MOTOR DRIVER MODULE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e2.2A current handling capability\u003c\/li\u003e\n\u003cli\u003eSmall footprint\u003c\/li\u003e\n\u003cli\u003eEasy step and direction control interface\u003c\/li\u003e\n\u003cli\u003eSix different step resolutions: full-step, half-step, 1\/4-step, 1\/8-step, 1\/16-step, and 1\/32-step\u003c\/li\u003e\n\u003cli\u003eAdjustable current control lets you set the maximum current output with a built-in potentiometer. That allows you to use voltages above your stepper motor’s rated voltage to achieve higher step rates\u003c\/li\u003e\n\u003cli\u003eAdjustable current decay modes.\u003c\/li\u003e\n\u003cli\u003eBuilt-in regulator so no external logic voltage supply is needed\u003c\/li\u003e\n\u003cli\u003eCan interface directly with 3.3 V and 5 V systems\u003c\/li\u003e\n\u003cli\u003eOver-temperature shutdown, over-current shutdown, and under-voltage lockout with FAULT pin output\u003c\/li\u003e\n\u003cli\u003eShort-to-ground and shorted-load protection\u003c\/li\u003e\n\u003cli\u003eExposed solderable ground pad below the driver IC on the bottom of the PCB can be used to enhance the cooling if desired.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe DRV8825 stepper motor driver can drive one bipolar stepper motor at up to  2.2A with adequate cooling.    The module can easily handle 1.5A with no heatsink.  A small heatsink is included and with a little air flow, it can handle up to the full 2.2A.  Note that the driver IC can handle up to 2.5A, but the 0.1 ohm current sense resistors limit the output to 2.2A.\u003c\/p\u003e\n\u003cp\u003eIt is packaged onto a small board with male headers installed in a wide DIP-16 footprint that makes it breadboard compatible or it can be mounted into a socket.  These are often used for precision control of stepper motors used in applications such as 3D printers or robotics.\u003c\/p\u003e\n\u003ch3\u003ePower Connections:\u003c\/h3\u003e\n\u003cp\u003eThe module operates at a voltage of from 8.2 to 45V.   Power is connected across the VMOT (Voltage Motor) pin and ground.  Note that though the driver operates at these voltages, stepper motors rated at lower voltages can be driven as long as the current limit is set for the motor that is being driven.\u003c\/p\u003e\n\u003cp\u003eIt is recommended that an electrolytic cap of 100uF or so size be placed across the VMOT and ground close to the module.  This becomes more important as the wiring form the driver to the motor increases in length. This is to help protect against LC induced voltage spikes that can exceed the 45V rating of the IC and cause damage.\u003c\/p\u003e\n\u003ch3\u003eMotor Connections:\u003c\/h3\u003e\n\u003cp\u003eThese are primarily designed to drive bipolar stepper motors with 4 wires.  In this case, one winding is connected across the 1A \u0026amp; 2A connections and the other winding is connected across the 1B \u0026amp; 2B connections.\u003c\/p\u003e\n\u003ch3\u003eCurrent Limit Adjustment:\u003c\/h3\u003e\n\u003cp\u003eThe module has active current limiting.  This allows the module to drive the motor at higher then rated voltages to achieve high step rates.\u003c\/p\u003e\n\u003cp\u003eThere is a trimmer potentiometer on the board which is used to set the current limit.  You will typically set the drivers current limit to be at or lower than the current rating of the motor.\u003c\/p\u003e\n\u003cp\u003eTo set the current limit, you measure the reference voltage and adjust it using the formula\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003e\u003cem\u003eCurrent Limit = VREF x 2\u003c\/em\u003e\u003c\/strong\u003e.  As an example, if your motor is rated for 1.2A, you would adjust the reference voltage to 0.6V if you wanted to have maximum current.\u003c\/p\u003e\n\u003cp\u003eThe reference voltage can be measured on the metal trimmer pot itself or on the two IC pins near the pot that look like they have a solder bridge.  One easy way to make the adjustment is to use an alligator clip on the shaft of a small metallic screwdriver and attach that to your DVM so you can both probe and adjust the voltage at the same time with the screwdriver.\u003c\/p\u003e\n\u003cp\u003eTo make the adjustment, you should have the motor connected and operating in full step mode.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003eNote that the motor coil current will be very different from the power supply current.  Typically the power supply voltage will be higher and the current lower than the voltage and current delivered to the motor coils, so you should not use the current measured at the power supply to make this adjustment.\u003c\/em\u003e\u003c\/p\u003e\n\u003ch3\u003eStep Size:\u003c\/h3\u003e\n\u003cp\u003eStepper motors have a set step size which is typically 1.8 degrees (200 steps per full revolution).  Microstepping drivers such as the DRV8825 allows for higher resolutions by allowing intermediate step movements.  This is achieved by energizing the coils with intermediate current levels.  For example, driving a motor in 1\/4 step mode will give a 200 step-per-revolution motor an 800 step resolution instead.\u003c\/p\u003e\n\u003cp\u003eThe step size is selected using the mode selector inputs (MODE 0, MODE 1, MODE 2) as shown in the table below.  These inputs have 100K pull-down resistors, so if they are left unconnected the driver operates in Full Step mode by default.\u003c\/p\u003e\n\u003cp\u003eIf microstepping is desired, the MODE inputs can be pulled high using a 10K or similar resistor if a fixed microstepping mode is being used or they can be dynamically driven using output pins on the microcontroller so that they modes can be changed on -the-fly.\u003c\/p\u003e\n\u003cp\u003eThe table below shows the microstepping modes that are available.\u003c\/p\u003e\n\u003ctable class=\"table table-hover\" width=\"739\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"160\"\u003e\u003cstrong\u003eMODE 0\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e\u003cstrong\u003eMODE 1\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e\u003cstrong\u003eMODE 2\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e\u003cstrong\u003eMicrostep Resolution\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003eFull Step (default)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003eHalf Step\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\/4 Step\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\/8 Step\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\/16 Step\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\/32 Step\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"160\"\u003e0\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\/32 Step\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\u003c\/td\u003e\n\u003ctd width=\"160\"\u003e1\/32 Step\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003eThere are 16 pins available on the module as shown below:\u003c\/p\u003e\n\u003cp\u003e\u003cimg decoding=\"async\" class=\"aligncenter wp-image-4886 size-full entered lazyloaded\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2.jpg\" alt=\"DRV8825 Module Pin-out\" width=\"800\" height=\"450\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2.jpg 800w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2-400x225.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2-300x169.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2-768x432.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2-280x158.jpg 280w\" data-lazy-sizes=\"(max-width: 800px) 100vw, 800px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 800px) 100vw, 800px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2.jpg 800w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2-400x225.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2-300x169.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2-768x432.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Pinout-2-280x158.jpg 280w\"\u003e\u003c\/p\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup.jpg\"\u003e\u003cimg decoding=\"async\" class=\"alignright wp-image-4883 entered lazyloaded\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup.jpg\" alt=\"DRV8825 Driver Minimal Setup Schematic\" width=\"400\" height=\"300\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup.jpg 800w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup-249x187.jpg 249w\" data-lazy-sizes=\"(max-width: 400px) 100vw, 400px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 400px) 100vw, 400px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup.jpg 800w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/DRV8825-Driver-Minimal-Setup-249x187.jpg 249w\"\u003e\u003c\/a\u003e\u003c\/p\u003e\n\u003cp\u003eThese stepper motor drivers pack a lot in a small package.  They work great with our 1.2A stepper motors and will work well with any bipolar stepper motors up to their current limit of 2.2A.\u003c\/p\u003e\n\u003cp\u003eWhen using with an Arduino, the\u003cspan\u003e \u003c\/span\u003e\u003ca href=\"https:\/\/github.com\/laurb9\/StepperDriver\" rel=\"noopener noreferrer\" target=\"_blank\"\u003e\u003cstrong\u003eBasicStepperDriver.h\u003c\/strong\u003e\u003c\/a\u003e\u003cspan\u003e \u003c\/span\u003elibrary can be downloaded from GitHub which provides control for the DRV8825 and similar stepper drivers and is used in our program below.\u003c\/p\u003e\n\u003cp\u003eThe program below is a simple test program.  It uses the module in the minimal hardware mode using just the DIR and STEP pins with the micro-stepping set to the default of full step as shown in the drawing to the right.\u003c\/p\u003e\n\u003cp\u003eIt moves the stepper in one direction for 5 rotations, rotates in the reverse direction for 1 rotation and then rotates for one rotation in discrete individual full steps. Ensure that the RST and SLP pins are pulled up to Vcc on the Arduino.  Also ensure that the current limiting has been adjusted for the motor you are using.\u003c\/p\u003e\n\u003ch3\u003eDRV8825 Stepper Motor Driver Module Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e * Exercise the DRV8825 Stepper Motor Driver Module\u003c\/span\u003e\n\u003cspan\u003e *\u003c\/span\u003e\n\u003cspan\u003e * This uses the minimal setup configuraiton with DIR connected to pin 8 and \u003c\/span\u003e\n\u003cspan\u003e * STEP connected to pin 9.\u003c\/span\u003e\n\u003cspan\u003e *\u003c\/span\u003e\n\u003cspan\u003e * The \/Reset and \/Sleep pins need to be pulled up to VCC\u003c\/span\u003e\n\u003cspan\u003e * Step size is left at default of Full Step\u003c\/span\u003e\n\u003cspan\u003e * This uses the BasicStepperDriver.h library which can be downloaded at GitHub\u003c\/span\u003e\n\u003cspan\u003e *\/\u003c\/span\u003e\n\u003cspan\u003e#include\u003c\/span\u003e \u003cspan\u003e\u0026lt;\u003c\/span\u003e\u003cspan\u003eArduino\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eh\u003c\/span\u003e\u003cspan\u003e\u0026gt;\u003c\/span\u003e\n\u003cspan\u003e#include\u003c\/span\u003e \u003cspan\u003e\"BasicStepperDriver.h\"\u003c\/span\u003e\n\n\u003cspan\u003e\/\/ Motor steps per revolution. Most steppers are 200 steps or 1.8 degrees\/step\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eMOTOR_STEPS\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e200\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e\/\/ Set speed of rotation\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eRPM\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e120\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n\u003cspan\u003e\/\/ Using default step size. 1=full step, 2=half step, etc.\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eMICROSTEPS\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e1\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n\u003cspan\u003e\/\/ Define Arduino pins usedUses default full step\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eDIR_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e8\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eSTEP_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n\u003cspan\u003e\/\/ Create stepper object in 2-wire basic configuration.  \u003c\/span\u003e\n\u003cb\u003e\u003cspan\u003eBasicStepperDriver\u003c\/span\u003e\u003c\/b\u003e \u003cspan\u003estepper\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_STEPS\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eDIR_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eSTEP_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003estepper\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eRPM\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMICROSTEPS\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Uses default full step mode\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n   \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n     \u003cspan\u003efor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e=\u003c\/span\u003e\u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e\u0026lt;\u003c\/span\u003e\u003cspan\u003e5\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003estepper\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003erotate\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e360\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ 360 = degrees rotation\u003c\/span\u003e\n\n    \u003cspan\u003estepper\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003erotate\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e-\u003c\/span\u003e\u003cspan\u003e360\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/ Rotate once in opposite direction\u003c\/span\u003e\n\n    \u003cspan\u003efor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e=\u003c\/span\u003e\u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e\u0026lt;\u003c\/span\u003e\u003cspan\u003e200\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e{\u003c\/span\u003e \u003cspan\u003e\/\/ Rotate 1 step at a time, pause between steps\u003c\/span\u003e\n      \u003cspan\u003estepper\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003emove\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e1\u003c\/span\u003e \u003cspan\u003e*\u003c\/span\u003e \u003cspan\u003eMICROSTEPS\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Steps are full steps\u003c\/span\u003e\n      \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e25\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e1000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003eBEFORE THEY ARE SHIPPED, THESE MODULES ARE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSample inspected and tested per incoming shipment.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eTECHNICAL SPECIFICATIONS\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"755\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Model\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Driver IC\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eDRV8825\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Operating Ratings\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Voltage\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e8.2 – 45VDC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Current per phase (Max w\/o heatsink)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e1.5A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Current per phase (Max with heatsink)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e2.2A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Microstep resolutions\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eFull, 1\/2, 1\/4, 1\/8, 1\/16, 1\/32\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Dimensions\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eDriver Board (L x W)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e20 x 15mm (0.8 x 0.6″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Datasheets\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003cspan\u003e\u003ca href=\"http:\/\/www.ti.com\/lit\/ds\/symlink\/drv8825.pdf\" rel=\"noopener noreferrer\" target=\"_blank\"\u003e\u003cstrong\u003eDRV8825 Driver\u003c\/strong\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681535320299,"sku":"","price":8.72,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/DRV8825-Stepper-Motor-Driver-2.jpg?v=1723005657"},{"product_id":"l298n-dual-h-bridge-motor-control-module","title":"L298N Dual H-Bridge Motor Control Module","description":"\u003cp\u003e\u003cspan\u003eMotor control module can drive 2 DC motors or 1 stepper motor at up to 2A.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe L298N Dual H-Bridge Motor Control Module can  be used to control 2 DC motors or 1 stepper motor at 2A continuous current per channel.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eL298N Dual H-Bridge Motor Control Module\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF L298N DUAL H-BRIDGE MOTOR CONTROL MODULE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrive 2 DC motors with speed and direction control\u003c\/li\u003e\n\u003cli\u003eDrive 1 stepper motor\u003c\/li\u003e\n\u003cli\u003e5 – 35V motor voltage range\u003c\/li\u003e\n\u003cli\u003e2.5A peak current per channel (2A continuous)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe module can handle up to 2.5A peak per bridge or 2A continuous and 25W total power.\u003c\/p\u003e\n\u003cp\u003eL298N modules do not have built-in current limiting, so they are best suited for DC motor control rather than stepper control, so that is what we are going to focus on here.\u003c\/p\u003e\n\u003cp\u003eWhen used with DC motors, the H-Bridge drive arrangement allows the direction of the rotation of the motors to be changed.  In addition PWM can be used to control the speed of the motors.  This gives full control over the DC motors.\u003c\/p\u003e\n\u003cp\u003ePWM stands for Pulse Width Modulation which means that the duty cycle (signal HIGH vs signal LOW) of the waveform can be changed.  As the duty cycle is changed, the average DC voltage as seen by the motors also changes which changes the speed at which the motor turns.  Motors require a minimum amount of voltage to start turning, so low PWM values may not move the motors but you may be able to hear the motors humming.\u003c\/p\u003e\n\u003ch3\u003eInput Power:\u003c\/h3\u003e\n\u003cp\u003eThe module has a Vcc input terminal and a 5V terminal which can either be an input or an output.  The module can be powered either by inputting 7 to 35V on the Vcc terminal or by inputting 5V on the 5V terminal.\u003c\/p\u003e\n\u003cp\u003eThere is a power button on the module that enables the Vcc input.  When Vcc is enabled a red LED will light.  If instead, you use the 5V power input, the switch is bypassed and the board will always be powered.\u003c\/p\u003e\n\u003cp\u003eThe Vcc input  feeds a built-in 5V regulator which is used by the L298N chip.  If the input voltage is in the range of 7 – 12VDC, there will be 5V available at the 5V terminal that  can be used to power an Arduino or other 5V logic.  The built-in 5V regulator can handle up to 400mA maximum.  If Vcc is higher than 12VDC, it is not recommended to use the built-in 5V to power other devices to avoid possible overheating of the 5V regulator.\u003c\/p\u003e\n\u003cp\u003eUsing the Vcc input with a voltage between 7-12V gives the most flexibility when using this module and is the recommended mode to use.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003eNOTE:  You cannot input voltages on both the Vcc and 5V terminals at the same time or damage may result.\u003c\/em\u003e\u003c\/p\u003e\n\u003ch3\u003eControl Inputs:\u003c\/h3\u003e\n\u003cp\u003eThe ENA \u0026amp; ENB pins are the enable pins for the 2 H-Bridge motor controllers in the L298N and are active HIGH.  As shipped, these pins are jumpered to 5V (HIGH) which means they are constantly enabled.  These jumpers are left on when using the module with a stepper motor.  If using the module with DC motors they can be left on if it is always desired to run the motors at full speed.  The motors can be stopped, run in fast forward or in fast reverse.  Normally speed control is required so the jumpers are removed and the ENA \/ ENB pins are connected to PWM pins on the microcontroller to enact speed control over the motors using Pulse Width Modulation (PWM).\u003c\/p\u003e\n\u003cp\u003eThe drivers can each handle up to 2A.  If the motors are on the smaller side such as is used on our Smart Car Chassis, two can be easily driven by each of the two drivers.  This can be handy when using with a 4 wheel drive vehicle since you normally want both motors on the same side of the vehicle to be turning in unison anyway and that way one L298N module can be used to drive all 4 wheels.\u003c\/p\u003e\n\u003cp\u003eThe IN1, IN2, IN3 and IN4 are control pins that determine the configuration of the two H-Bridges in the device.  The IN1 \/ IN2 pins control the ‘A’ motor bridge and the IN3 \/ IN4 pins control the ‘B’ motor bridge.    The H-Bridge is what controls the direction that the motor turns as shown in the chart below.  It can also be used for on\/off control of desired, but normally the ENA \/ ENB enable lines are used for that purpose.  There are green status LEDs on the IN1-4 lines near the motor terminal connections.  When the control pins are HIGH, the associated LEDs are brightly lit.  When they are LOW, the LEDs may either be off or dimly lit.\u003cbr\u003e\u003c\/p\u003e\n\u003ctable class=\"table table-bordered\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003e\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eIN1 \/ (IN3)\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eIN2 \/ (IN4)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eForward Direction\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eReverse Direction\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eStopped\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eStopped\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003eNote that the direction that the motors turn (forward vs reverse) with the above commands depends on how the ‘+’ and ‘-‘ leads of  the motors are wired to the module.  If they are turning backwards from what is expected, reverse the motor leads at the module.\u003c\/p\u003e\n\u003ch3\u003eModule Connections:\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003e2 x 4 Header\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN1\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Digital input for Motor A – Connect to a digital output pin on the microcontroller.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Digital input for Motor A – Connect to a digital output pin on the microcontroller.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN3\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Digital input for Motor B – Connect to a digital output pin on the microcontroller.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN4\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Digital input for Motor B – Connect to a digital output pin on the microcontroller.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eENA\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Enable for motor A, active HIGH.   Remove jumper and connect to PWM pin on microcontroller if using speed control.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e5V\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Used to jumper ENA to HIGH\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e5V\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Used to jumper ENB to HIGH\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eENB\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Enable for motor B, active HIGH.  Remove jumper and connect to PWM pin on microcontroller if using speed control.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1 x 3 Terminal\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eVCC\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Main power input.  Can be 7-35V.  7-12V recommended.  This is the voltage that is applied to the motor minus a 2V drop through the L298N driver.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGND\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– System ground.   Must be in common with the MCU  ground.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e5V\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Input\/output.  Can input 5V if Vcc input is not used.  If Vcc of 7-12V is input, 5V is available on this terminal to power other logic devices such as an Arduino.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1 x 2 Terminal (Motor A)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eOUT1\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor A ‘+’ positive lead\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOUT2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor A ‘-‘ negative lead\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1 x 2 Terminal (Motor B)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eOUT3\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor A ‘+’ positive lead\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOUT4\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor A ‘-‘ negative lead\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eThese modules work well and are straightforward to use.  The logic is easy enough that a library is not needed to implement the software to control them.\u003ca href=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing.jpg\"\u003e\u003cimg decoding=\"async\" class=\"alignright size-medium wp-image-10470 entered lazyloaded\" alt=\"L298N Dual H-Bridge Motor Control Module - Testing\" width=\"300\" height=\"225\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing-249x187.jpg 249w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing.jpg 800w\" data-lazy-sizes=\"(max-width: 300px) 100vw, 300px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing-300x225.jpg\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing-300x225.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 300px) 100vw, 300px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing-249x187.jpg 249w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/02\/L298N-Dual-H-Bridge-Motor-Control-Module-Testing.jpg 800w\"\u003e\u003c\/a\u003e\u003c\/p\u003e\n\u003cp\u003eThe program below is a simple program to illustrate the control of DC motors.  It moves the motors through a repeating sequence of running them both forward, then backwards, then in  opposite directions.  It then ramps the motor speed up and then back down in both forwards and reverse directions.\u003c\/p\u003e\n\u003cp\u003eThe IN1-4 digital pins can be connected to any digital pins that are available on the MCU.  The ENA and ENB pins must be connected to PWM pins as we will use them for speed control.  The default program settings are as follows:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eENA – Pin 10 (must be PWM capable)\u003c\/li\u003e\n\u003cli\u003eIN1 – Pin 9\u003c\/li\u003e\n\u003cli\u003eIN2 – Pin 8\u003c\/li\u003e\n\u003cli\u003eENB – Pin5 (must be PWM capable)\u003c\/li\u003e\n\u003cli\u003eIN3 – Pin 7\u003c\/li\u003e\n\u003cli\u003eIN4 – Pin 6\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eYou will also need a common ground between the MCU and the motor controller ground terminal.\u003c\/p\u003e\n\u003cp\u003eAll of the low level motor control is done in a function called Motor.  The Motor function takes the following inputs:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003emot\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Motor to control.  This can be ‘A’ for motor A or ‘B’ for motor B or ‘C’ to control both.  Note that the single quotes are needed to denote that we are passing type char\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003edir\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Direction of motor.  This can be ‘F’ for forward or ‘R’ for reverse.  Again, but sure to use the single quotes.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003espeed\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Speed of motor.  The value passed to the function is expressed in a range of 0-100%.  That value is remapped to 0-255 for PWM control.  The remapping ignores speed values that are too low to make the motors turn using the constant MIN_SPEED which in our example is set to 27, but 0 still means 0 to stop the motors.  The optimum MIN_SPEED value for a particular setup will depend on the motors being used and the voltage at which they are being powered and is best determined experimentally.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eL298N Dual H-Bridge Motor Control Module Example Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e*  L298N Dual H-Bridge Test - DC Motors\u003c\/span\u003e\n\u003cspan\u003e*  Code for exercising the L298N Motor Control module.\u003c\/span\u003e\n\u003cspan\u003e*  The low level motor control logic is kept in the function 'Motor'\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003e\/\/  IN1-4 can be connected to any digital pins on microcontroller\u003c\/span\u003e\n\u003cspan\u003e\/\/  ENA and ENB must be connected to PWM pins.\u003c\/span\u003e\n\u003cspan\u003e\/\/  Motor A\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eENA\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e10\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Must be PWM pin\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eIN1\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eIN2\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e8\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e\/\/  Motor B\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eENB\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e5\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Must be PWM pin\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eIN3\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e7\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eIN4\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e6\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eMIN_SPEED\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e27\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/ Set to minimum PWM value that will make motors turn\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eACCEL_DELAY\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e50\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ delay between steps when ramping motor speed up or down.\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eENA\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/ set all the motor control pins to outputs\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eENB\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN3\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN4\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e9600\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e     \u003cspan\u003e\/\/ Set comm speed for serial monitor messages\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003e\/\/ This  will run both motors in both directions at a fixed speed\u003c\/span\u003e\n  \u003cspan\u003e\/\/ First go Forward at 75% power for 2 seconds\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e75\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e\/\/ now change motor directions to reverse and run at 75% speed\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e75\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \n  \u003cspan\u003e\/\/ now run motors in opposite directions at same time at 50% speed\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'A'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e50\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'B'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e50\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e\/\/ now turn off both motors\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n  \u003cspan\u003e\/\/ Run the motors across the range of possible speeds in both directions\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Maximum speed is determined by the motor itself and the operating voltage\u003c\/span\u003e\n\n  \u003cspan\u003e\/\/ Accelerate from zero to maximum speed\u003c\/span\u003e\n  \u003cspan\u003efor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e\u0026lt;=\u003c\/span\u003e \u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n  \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eACCEL_DELAY\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Decelerate from maximum speed to zero\u003c\/span\u003e\n  \u003cspan\u003efor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e\u0026gt;=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e--\u003c\/span\u003e\u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n  \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eACCEL_DELAY\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Set direction to reverse and accelerate from zero to maximum speed\u003c\/span\u003e\n  \u003cspan\u003efor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e\u0026lt;=\u003c\/span\u003e \u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n  \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eACCEL_DELAY\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Decelerate from maximum speed to zero\u003c\/span\u003e\n  \u003cspan\u003efor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e\u0026gt;=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e--\u003c\/span\u003e\u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n  \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eACCEL_DELAY\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Turn off motors\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e * Motor function does all the heavy lifting of controlling the motors\u003c\/span\u003e\n\u003cspan\u003e * mot = motor to control either 'A' or 'B'.  'C' controls both motors.\u003c\/span\u003e\n\u003cspan\u003e * dir = Direction either 'F'orward or 'R'everse\u003c\/span\u003e\n\u003cspan\u003e * speed = Speed.  Takes in 1-100 percent and maps to 0-255 for PWM control.  \u003c\/span\u003e\n\u003cspan\u003e * Mapping ignores speed values that are too low to make the motor turn.\u003c\/span\u003e\n\u003cspan\u003e * In this case, anything below 27, but 0 still means 0 to stop the motors.\u003c\/span\u003e\n\u003cspan\u003e *\/\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003emot\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003edir\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003espeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003e\/\/ remap the speed from range 0-100 to 0-255\u003c\/span\u003e\n  \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003espeed\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n    \u003cspan\u003enewspeed\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/ Don't remap zero, but remap everything else.\u003c\/span\u003e\n  \u003cspan\u003eelse\u003c\/span\u003e\n    \u003cspan\u003enewspeed\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003emap\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003espeed\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMIN_SPEED\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e255\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n  \u003cspan\u003eswitch\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emot\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'A'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Controlling Motor A\u003c\/span\u003e\n      \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eelse\u003c\/span\u003e \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eENA\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n    \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'B'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Controlling Motor B\u003c\/span\u003e\n      \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN3\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN4\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eelse\u003c\/span\u003e \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN3\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN4\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eENB\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n    \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e  \u003cspan\u003e\/\/ Controlling Both Motors\u003c\/span\u003e\n      \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN3\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN4\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eelse\u003c\/span\u003e \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN3\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eIN4\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eENA\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eENB\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Send what we are doing with the motors out to the Serial Monitor.\u003c\/span\u003e\n  \n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motor: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emot\u003c\/span\u003e\u003cspan\u003e==\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Both\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003eelse\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emot\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"  Direction: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"  Speed: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003espeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"  Mapped Speed: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003e\u003cstrong\u003eBEFORE THEY ARE SHIPPED, THESE MODULES ARE:\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSample inspected and tested per incoming shipment.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003e\u003cstrong\u003eTECHNICAL SPECIFICATIONS\u003c\/strong\u003e\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"757\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eOperating Ratings\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Voltage range (Vcc)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 5 – 35 VDC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Recommended voltage range (Vcc)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e7 – 12 VDC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Voltage range (5V)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e4.5 – 5.5 VDC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMax current per bridge\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 2 A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Max power of module\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 25 W\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Dimensions\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eDriver Board (L x W x H)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e54 x 44 x 28 mm (2.1 x 1.7 x 1.1″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDatasheet\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003cspan\u003e\u003cstrong\u003e\u003ca href=\"http:\/\/www.st.com\/content\/ccc\/resource\/technical\/document\/datasheet\/82\/cc\/3f\/39\/0a\/29\/4d\/f0\/CD00000240.pdf\/files\/CD00000240.pdf\/jcr:content\/translations\/en.CD00000240.pdf\" rel=\"noopener noreferrer\" target=\"_blank\"\u003eL298N\u003c\/a\u003e\u003c\/strong\u003e\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681557537003,"sku":"","price":12.37,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/L298N-Dual-H-Bridge-Motor-Control-Module-1.jpg?v=1723005637"},{"product_id":"servo-motor-micro-mg90s","title":"Servo Motor Micro MG90S","description":"\u003cp\u003e\u003cspan\u003eMicro size 180 degree analog servo with metal gears\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe Servo Motor Micro MG90S is a micro size 180 degree analog servo with metal gears and robust construction.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e1 MG90S Servo motor with attached 9.5″ control cable\u003c\/li\u003e\n\u003cli\u003e3 arms\/horns for various interface applications\u003c\/li\u003e\n\u003cli\u003eScrews for mounting arms to the servo and mounting the servo\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF SERVO MOTOR MICRO MG90S:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVery small micro size\u003c\/li\u003e\n\u003cli\u003eFairly strong, can lift 3.75lb positioned 1 cm from center of shaft\u003c\/li\u003e\n\u003cli\u003e180 degree rotation\u003c\/li\u003e\n\u003cli\u003eSturdy metal gears\u003c\/li\u003e\n\u003cli\u003eAnalog drive\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe MG90S Servo motor is an upgrade over the very common and inexpensive SG90 in that it adds metal gears, a little better torque and overall more robust construction.\u003c\/p\u003e\n\u003cp\u003eThese work well for basic servo experimentation and can be used in applications where small size is a virtue and that don’t require a huge amount of torque, but they are still pretty strong.\u003c\/p\u003e\n\u003cp\u003eServo motors can be commanded to go to a specific position and so are the usual go-to motor when accurate positioning is needed, such as for turning the front wheels on an RC model for steering or pivoting a sensor to look around on a robotic vehicle.\u003c\/p\u003e\n\u003cp\u003eServo motors are comprised of a DC motor, gears, a potentiometer to determine its position and a small electronic control board.\u003c\/p\u003e\n\u003cp\u003eStandard servos have a specified limited range.  This is usually specified as 180 degrees.  Frequently the actual range is not quite the full 180 degrees and is limited by the mechanical gears and potentiometer used for position sensing that is contained in the device.  If the motor is run all the way to 0 or 180, it may start making unhappy sounds and start vibrating as it tries to drive to a position that it cannot get to.  This causes a high stall current condition and has the potential of stripping gears and damaging the motor, so it is best to either drive it to a safely reduced range such as 20-160 or experiment a bit to determine the actual usable range if you want to maximize the range.\u003c\/p\u003e\n\u003cp\u003eServos expect to see a pulse on their PWM pin every 20mSec.  The pulse is active HIGH and the width of the pulse determines the position (angle) of the servos shaft.  The pulse can vary between 1mSec and 2mSec.  A 1mSec pulse positions the shaft at 0 degrees.  A 1.5mSec pulse positions the shaft at 90 degrees (centered in its range).  A 2mSec pulse positions the shaft at 180 degrees.  Pulses with values between these can be used to position the shaft arbitrarily.\u003c\/p\u003e\n\u003ch3\u003eMotor Connections\u003c\/h3\u003e\n\u003cp\u003eThe built-in cable has a 3-pin female connector that is usually mated with a male header.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e1×3 Female Connector\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eBrown\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Ground\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRed\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= 5V\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOrange\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= PWM Signal\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003chr\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eIn our testing these servos can lift about 3.75 lbs that is positioned on an arm 1 cm out from the shaft , so they are actually fairly strong little motors.  We also didn’t have any issues with the gears when pushed to their max.\u003c\/p\u003e\n\u003cp\u003eThe servo runs on 5V with a current draw about 10mA at idle and 120mA to 250mA when being commanded to move depending on how it is being operated.  Current draw can get up to a maximum of 700mA under a stall condition.  One MG90S can typically be driven off the 5V power pin of an Arduino when experimenting as long as you don’t stall the motor, but motors in general are electrically noisy and power hungry devices.  It is always better to drive them directly off of a separate power supply rather than trying to power from the on-board Arduino regulator whenever possible\u003c\/p\u003e\n\u003cp\u003eIf you do decide to run it directly off the Arduino, you can help avoid most problems by running the power and ground from the Arduino over to a breadboard and then to the servo.  By placing a fairly large electrolytic cap of around 470-1000uF across the power and ground on the breadboard, that will help to insulate the Arduino from some of the power surges of the motor.\u003c\/p\u003e\n\u003cp\u003eThe program below can be used to exercise a servo motor by using a potentiometer to set the position of the servo.  This setup can also be used to determine the limits of the servos range by running the servo near its end-points and observing where it mechanically stops relative to the position command that is being issued.  The constants MIN_VALUE and MAX_VALUE are used to set the 2 end-points in the program below.\u003c\/p\u003e\n\u003ch3\u003eServo Motor Micro MG90S Test Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e  Exercise Servo motor\u003c\/span\u003e\n\u003cspan\u003e  Use a potentiometer on pin A0 to command a servo attached to pin 9 to move to\u003c\/span\u003e\n\u003cspan\u003e  a specific position.  The Servo MIN_VALUE and MAX_VALUE can be adjusted to \u003c\/span\u003e\n\u003cspan\u003e  avoid hitting the servo stops\u003c\/span\u003e\n\u003cspan\u003e  Uses built-in Servo.h library\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003e#include\u003c\/span\u003e \u003cspan\u003e\"Servo.h\"\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eSERVO_PIN\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e   \u003cspan\u003e\/\/ Can use any PWM pin\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003ePOT_PIN\u003c\/span\u003e \u003cspan\u003eA0\u003c\/span\u003e    \u003cspan\u003e\/\/ Can use any analog pin\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e   \u003cspan\u003e\/\/ Minimum Servo position\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e \u003cspan\u003e180\u003c\/span\u003e \u003cspan\u003e\/\/ Maximum Servo position\u003c\/span\u003e\n\n\u003cb\u003e\u003cspan\u003eServo\u003c\/span\u003e\u003c\/b\u003e \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e          \u003cspan\u003e\/\/ creates servo object used to control the servo motor\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_pot\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e    \u003cspan\u003e\/\/ Current value of the potentiometer\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Current servo position\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_servo_old\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Used to hold old servo value to look for change.\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eattach\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eSERVO_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ assigns PWM pin to the servo object\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e9600\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e     \u003cspan\u003e\/\/ Set Serial Monitor window comm speed\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003evalue_pot\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eanalogRead\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePOT_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Reads value of the potentiometer. Return value = 0 to 1023\u003c\/span\u003e\n  \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003emap\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_pot\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e1023\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ remap pot value to servo value\u003c\/span\u003e\n  \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e!=\u003c\/span\u003e \u003cspan\u003evalue_servo_old\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e   \u003cspan\u003e\/\/ Only do something if there's a change in the servo position\u003c\/span\u003e\n    \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e        \u003cspan\u003e\/\/ Update servo position\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Pot Value: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Update Serial Monitor window with what's going on\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_pot\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"tServo Value: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003evalue_servo_old\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e25\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ give servo time to move\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003eBEFORE THEY ARE SHIPPED, THESE SERVO MOTORS ARE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInspected\u003c\/li\u003e\n\u003cli\u003eBasic operation of servo motor verified\u003c\/li\u003e\n\u003cli\u003eRepackaged for safe storage.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003e\u003cstrong\u003eTECHNICAL SPECIFICATIONS\u003c\/strong\u003e\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"764\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eMotor Model\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eGeneric MG90S (China)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDrive Type\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eAnalog\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDegree Rotation\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e180° (±15°)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eOperating Ratings\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eVoltage\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e4.8-6 VDC  (5V Typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (idle)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e10mA (typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (typical during movement)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e120-250mA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (stall)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e700mA (measured)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eStall Torque\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e2.2kg-cm (per spec)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eSpeed\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e0.12s \/ 60 degree (varies with VDC)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDimensions\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Cable Length\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 24cm  (9.5″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Housing L x W x H\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e23 x 12 x 26mm (0.9 x0 .5 x  1″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Height (w\/ shaft)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e32mm (1.26″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotor Housing Width with Mounting Ears\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e32mm (1.26″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681574314219,"sku":"","price":13.72,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/Servo-MG90S-1.jpg?v=1723005603"},{"product_id":"servo-motor-micro-mg90s-360-degree-continuous-rotation","title":"Servo Motor Micro MG90S – 360 Degree Continuous Rotation","description":"\u003cp\u003e\u003cspan\u003eMicro size servo is perfect for driving micro-robot drive wheels.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe Servo Motor Micro MG90S – 360 degree continuous rotation servo is a micro size 360 degree analog servo with metal gears and robust construction.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e1 MG90S 360 Degree Continuous Rotation Servo motor with attached 9.5″ control cable\u003c\/li\u003e\n\u003cli\u003e3 arms\/horns for various interface applications\u003c\/li\u003e\n\u003cli\u003eScrews for mounting arms to the servo and mounting the servo\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF SERVO MOTOR MICRO MG90S – 360 DEGREE CONTINUOUS ROTATION:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVery small micro size\u003c\/li\u003e\n\u003cli\u003e360 degree continuous rotation of the shaft\u003c\/li\u003e\n\u003cli\u003eSturdy metal gears\u003c\/li\u003e\n\u003cli\u003eAnalog drive\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eUnlike normal servos that can be commanded to an exact position within a range of about 180 or 360 degrees, these servos will rotate continuously in either direction with no ability to position it to a particular position or to control speed.  Think of them more like small DC motors with a motor controller built-in that powers the motor and that allows you to start\/stop and control direction.\u003c\/p\u003e\n\u003cp\u003eThe gears are heavy-duty metal.  The speed of rotation is fixed at about 120RPM.\u003c\/p\u003e\n\u003cp\u003eThese types of servos are handy for driving wheels on a micro-robot where space is limited or if you just want to spin something.\u003c\/p\u003e\n\u003cp\u003eThese are driven by a PWM signal.  A pulse width of approximately 1500uS (PWM value of about 185) will cause the motor to stop.  A higher PWM value over about 195 will rotate the motor in one direction while a lower PWM value under about 175 will cause the motor to rotate in the opposite direction.  If the PWM value drops below about 500uSec (PWM value of 62), the motor will also stop due to insufficient drive.\u003c\/p\u003e\n\u003cp\u003eIf using the Servo.h library, as shown in the code below, a command of about 90 will cause the motor to stop.  A value of 0 will cause it turn in one direction at full speed and a value of 180 will cause it to turn in the other direction at full speed.\u003c\/p\u003e\n\u003ch3\u003eMotor Connections\u003c\/h3\u003e\n\u003cp\u003eThe built-in cable has a 3-pin female connector that is usually mated with a male header.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e1×3 Female Connector\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eBrown\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Ground\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRed\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= 5V\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOrange\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= PWM Signal\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003chr\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eThese servos are fairly strong little motors with metal gears.\u003c\/p\u003e\n\u003cp\u003eThe servo runs on 5V with a current draw about 10mA at idle and 120mA to 250mA when being commanded to move depending on how it is being operated.  Current draw can get up to a maximum of 800mA under a stall condition, so be aware of that.  One MG90S can typically be driven off the power pin of an Arduino when experimenting as long as you don’t stall it, but motors in general are electrically noisy and power hungry devices.  It is always better to drive them directly off of a power supply rather than trying to power from the on-board Arduino regulator whenever possible\u003c\/p\u003e\n\u003cp\u003eIf you do decide to run it directly off the Arduino, you can help avoid most problems by running the power and ground from the Arduino over to a breadboard and then to the servo.  By placing a fairly large electrolytic cap of around 470-1000uF across the power and ground on the breadboard, that will help to insulate the Arduino from some of the power surges of the motor.\u003c\/p\u003e\n\u003cp\u003eThe program below can be used to exercise a 360 degree servo motor.  It simply spins the servo in one direction for 3 seconds, pauses and the spins in the opposite direction for 3 seconds.\u003c\/p\u003e\n\u003cp\u003eTo use, hookup 5V and ground to the servo power and ground pins.  Connect the PWM pin to pin 9 on the MCU, but this can be changed to any PWM capable pin.\u003c\/p\u003e\n\u003ch3\u003eServo Motor Micro MG90S Test Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e  Exercise 360 degree Servo motor\u003c\/span\u003e\n\u003cspan\u003e  Simply runs servo in one direction for 3 seconds, stops, then reverses direction\u003c\/span\u003e\n\u003cspan\u003e  Uses built-in Servo.h library\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003e#include\u003c\/span\u003e \u003cspan\u003e\"Servo.h\"\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eSERVO_PIN\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e   \u003cspan\u003e\/\/ Can use any PWM pin\u003c\/span\u003e\n\n\u003cb\u003e\u003cspan\u003eServo\u003c\/span\u003e\u003c\/b\u003e \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e          \u003cspan\u003e\/\/ creates servo object used to control the servo motor\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eattach\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eSERVO_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ assigns PWM pin to the servo object\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/Spin in one direction\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e3000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e90\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Stop\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e500\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e180\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Spin in opposite direction\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e3000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e90\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Stop\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e500\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003eBEFORE THEY ARE SHIPPED, THESE SERVO MOTORS ARE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInspected\u003c\/li\u003e\n\u003cli\u003eTested @ 5V for \u0026gt; 15 minutes using test program\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003e\u003cstrong\u003eTECHNICAL SPECIFICATIONS\u003c\/strong\u003e\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"764\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eMotor Model\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eGeneric MG90S (China)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eDrive Type\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eAnalog\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eDegree Rotation\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e360° continuous\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e \u003cstrong\u003eOperating Ratings\u003c\/strong\u003e\n\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eVoltage\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e4.8-6VDC  (5V Typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (idle)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e10mA (typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (typical during movement)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e120-250mA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (stall)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e800mA (measured)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eStall Torque\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e2.2 kg-cm (per spec)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eSpeed\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e120 RPM\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003e Dimensions\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Cable Length\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 24cm  (9.5″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Housing L x W x H\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e23 x 12 x 26mm (0.9 x0 .5 x  1″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Height (w\/ shaft)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e32mm (1.26″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotor Housing Width with Mounting Ears\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e32mm (1.26″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681575133419,"sku":"","price":14.87,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/Servo-MG90S-360-Continuous-1-1.jpg?v=1723005590"},{"product_id":"servo-motor-micro-sg90-360-degree-continuous-rotation","title":"Servo Motor Micro SG90 – 360 Degree Continuous Rotation","description":"\u003cp\u003e\u003cspan\u003eMicro size servo is perfect for driving micro-robot drive wheels.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe SG90 – 360 degree continuous rotation servo is a micro size analog servo.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e1 SG90 360 Degree Continuous Rotation Servo motor with attached 9.5″ control cable\u003c\/li\u003e\n\u003cli\u003e3 arms\/horns for various interface applications\u003c\/li\u003e\n\u003cli\u003eScrews for mounting arms to the servo and mounting the servo\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF SERVO MOTOR MICRO SG90 – 360 DEGREE CONTINUOUS ROTATION:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVery small micro size\u003c\/li\u003e\n\u003cli\u003e360 degree continuous rotation of the shaft\u003c\/li\u003e\n\u003cli\u003eNylon gears\u003c\/li\u003e\n\u003cli\u003eAnalog drive\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eUnlike normal servos that can be commanded to an exact position within a range of about 180 or 360 degrees, these servos will rotate continuously in either direction with no ability to position it to a particular position.  Think of them more like small DC motors with a motor controller built-in that powers the motor and that allows you to start\/stop and control direction.\u003c\/p\u003e\n\u003cp\u003eThe gears are nylon.  The nominal speed of rotation is 120RPM @ 5V.  The motor can be run slower down to about 60RPM, but will stall easier at lower speeds.\u003c\/p\u003e\n\u003cp\u003eThese types of servos are handy for driving wheels on a micro-robot where space is limited or if you just want to spin something.\u003c\/p\u003e\n\u003cp\u003eThese are driven by a PWM signal.  A pulse width of approximately 1500uS (PWM value of about 185) will cause the motor to stop.  A higher PWM value over about 195 will rotate the motor in one direction while a lower PWM value under about 175 will cause the motor to rotate in the opposite direction.  If the PWM value drops below about 500uSec (PWM value of 62), the motor will also stop due to insufficient drive.\u003c\/p\u003e\n\u003cp\u003eIf using the Servo.h library, as shown in the code below, a command of about 90 will cause the motor to stop.  A value of 0 will cause it turn in one direction at full speed and a value of 180 will cause it to turn in the other direction at full speed.\u003c\/p\u003e\n\u003ch3\u003eMotor Connections\u003c\/h3\u003e\n\u003cp\u003eThe built-in cable has a 3-pin female connector that is usually mated with a male header.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e1×3 Female Connector\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eBrown\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Ground\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRed\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= 5V\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOrange\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= PWM Signal\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003chr\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eThese servos are fairly strong little motors.\u003c\/p\u003e\n\u003cp\u003eThe servo runs on 5V with a current draw about 10mA at idle and 110mA to 250mA when being commanded to move depending on how it is being operated.  Current draw can get up to a maximum of 300mA under a stall condition, so be aware of that.  One SG90 can typically be driven off the power pin of an Arduino when experimenting as long as you don’t stall it, but motors in general are electrically noisy and power hungry devices.  It is always better to drive them directly off of a power supply rather than trying to power from the on-board MCU regulator whenever possible\u003c\/p\u003e\n\u003cp\u003eIf you do decide to run it directly off the MCU, you can help avoid most problems by running the power and ground from the MCU over to a breadboard and then to the servo.  By placing a fairly large electrolytic cap of around 470-1000uF across the power and ground on the breadboard, that will help to insulate the MCU from some of the power surges of the motor.\u003c\/p\u003e\n\u003cp\u003eThe program below can be used to exercise a 360 degree servo motor.  It simply spins the servo in one direction for 3 seconds, pauses and the spins in the opposite direction for 3 seconds.\u003c\/p\u003e\n\u003cp\u003eTo use, hookup 5V and ground to the servo power and ground pins.  Connect the PWM pin to pin 9 on the MCU, but this can be changed to any PWM capable pin.\u003c\/p\u003e\n\u003ch3\u003eServo Motor Micro SG90 360 Degree Test Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e  Exercise 360 degree Servo motor\u003c\/span\u003e\n\u003cspan\u003e  Simply runs servo in one direction for 2 seconds and then reverses direction\u003c\/span\u003e\n\u003cspan\u003e  Uses built-in Servo.h library\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003e#include\u003c\/span\u003e \u003cspan\u003e\"Servo.h\"\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eSERVO_PIN\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e   \u003cspan\u003e\/\/ Can use any PWM pin\u003c\/span\u003e\n\n\u003cb\u003e\u003cspan\u003eServo\u003c\/span\u003e\u003c\/b\u003e \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e          \u003cspan\u003e\/\/ creates servo object used to control the servo motor\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eattach\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eSERVO_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ assigns PWM pin to the servo object\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/Spin in one direction\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e3000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e90\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Stop\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e500\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e180\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Spin in opposite direction\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e3000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e90\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Stop\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e500\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003eBEFORE THEY ARE SHIPPED, THESE SERVO MOTORS ARE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInspected\u003c\/li\u003e\n\u003cli\u003eTested @ 5V using test program\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003e\u003cstrong\u003eTECHNICAL SPECIFICATIONS\u003c\/strong\u003e\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"764\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eMotor Model\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eGeneric SG90 (China)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eDrive Type\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eAnalog\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eDegree Rotation\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e360° continuous\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e \u003cstrong\u003eOperating Ratings\u003c\/strong\u003e\n\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eVoltage\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e4.8-6VDC  (5V Typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (idle)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e10mA (typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (typical during movement)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e100-250mA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (stall)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e300mA (measured)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eStall Torque\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e1.7 kg-cm (per spec)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eFull Speed\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e120 RPM @ 5V\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003e Dimensions\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Cable Length\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 24cm  (9.5″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Housing L x W x H\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e23 x 12 x 26mm (0.9 x0 .5 x  1″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Height (w\/ shaft)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e32mm (1.26″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotor Housing Width with Mounting Ears\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e32mm (1.26″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681576739051,"sku":"","price":9.47,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/Servo-SG90.jpg?v=1723005578"},{"product_id":"servo-motor-micro-sg90","title":"Servo Motor Micro SG90","description":"\u003cp\u003e\u003cspan\u003eLow cost micro servo motor for light duty work like sensor movement.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe Servo Motor Micro SG90 is a very common and inexpensive servo in a compact micro size package.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e1 SG90 Servo motor with attached 9.5″ control cable\u003c\/li\u003e\n\u003cli\u003e3 arms\/horns for various interface applications\u003c\/li\u003e\n\u003cli\u003eScrews for mounting arms to the servo and mounting the servo\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF SERVO MOTOR MICRO SG90:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVery small micro size\u003c\/li\u003e\n\u003cli\u003eCan lift 3.75lb positioned 1cm from center of shaft\u003c\/li\u003e\n\u003cli\u003e180 degree rotation\u003c\/li\u003e\n\u003cli\u003eAnalog drive\u003c\/li\u003e\n\u003cli\u003eLow cost\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe Servo Motor Micro SG90 work well for basic servo experimentation and can be used in applications where small size is a virtue and that don’t require a huge amount of torque, but they are still pretty strong. Gears are nylon which is the case with most lower cost Servos.\u003c\/p\u003e\n\u003cp\u003eServo motors can be commanded to go to a specific position and so are the usual go-to motor when accurate positioning is needed, such as for turning the front wheels on an RC model for steering or pivoting a sensor to look around on a robotic vehicle.\u003c\/p\u003e\n\u003cp\u003eServo motors are comprised of a DC motor, gears, a potentiometer to determine its position and a small electronic control board.\u003c\/p\u003e\n\u003cp\u003eStandard servos have a specified limited range.  This is usually specified as 180 degrees.  Frequently the actual range is less than the full 180 degrees and is limited by the mechanical gears and potentiometer used for position sensing that is contained in the device.  If the motor is run all the way to 0 or 180, it may start making unhappy sounds and start vibrating as it tries to drive to a position that it cannot get to.  This causes a high stall current condition and has the potential of stripping gears and damaging the motor, so it is best to either drive it to a safely reduced range such as 20-160 or experiment a bit to determine the actual usable range if you want to maximize the range.\u003c\/p\u003e\n\u003cp\u003eServos expect to see a pulse on their PWM pin every 20 mSec.  The pulse is active HIGH and the width of the pulse determines the position (angle) of the servos shaft.  The pulse can vary between 1mSec and 2mSec.  A 1mSec pulse positions the shaft at 0 degrees.  A 1.5mSec pulse positions the shaft at 90 degrees (centered in its range).  A 2 mSec pulse positions the shaft at 180 degrees.  Pulses with values between these can be used to position the shaft arbitrarily.\u003c\/p\u003e\n\u003ch3\u003eMotor Connections\u003c\/h3\u003e\n\u003cp\u003eThe built-in cable has a 3-pin female connector that is usually mated with a standard 0.1″ male header\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e1×3 Female Connector\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eBrown\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Ground\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRed\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= 5V\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOrange\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= PWM Signal\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003chr\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eIn our testing these servos can lift about 3.75lbs that is positioned on an arm 1cm out from the shaft , so they are actually fairly strong little motors.  We also didn’t have any issues with stripping the nylon gears when pushed to their max.\u003c\/p\u003e\n\u003cp\u003eThe servo runs on 5V with a current draw about 10mA at idle and 100mA to 250mA when being commanded to move depending on how it is being operated.  Current draw can get up to a maximum of 360mA under a stall condition.  One SG90 can typically be driven off the power pin of an Arduino when experimenting, but motors in general are electrically noisy and power hungry devices.  It is always better to drive them directly off of a power supply rather than trying to power from the on-board Arduino regulator whenever possible\u003c\/p\u003e\n\u003cp\u003eIf you do decide to run it directly off the Arduino, you can help avoid most problems by running the power and ground from the Arduino over to a breadboard and then to the servo.  By placing a fairly large electrolytic cap of around 470-1000uF across the power and ground on the breadboard, that will help to insulate the Arduino from some of the power surges of the motor.\u003c\/p\u003e\n\u003cp\u003eThe program below can be used to exercise a servo motor by using a potentiometer to set the position of the servo.  This setup can also be used to determine the limits of the servos range by running the servo near its end-points and observing where it mechanically stops relative to the position command that is being issued.  The constants MIN_VALUE and MAX_VALUE are used to set the 2 end-points in the program below.\u003c\/p\u003e\n\u003ch3\u003eServo Motor Micro SG90 Test Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e  Exercise Servo motor\u003c\/span\u003e\n\u003cspan\u003e  Use a potentiometer on pin A0 to command a servo attached to pin 9 to move to\u003c\/span\u003e\n\u003cspan\u003e  a specific position.  The Servo MIN_VALUE and MAX_VALUE can be adjusted to \u003c\/span\u003e\n\u003cspan\u003e  avoid hitting the servo stops\u003c\/span\u003e\n\u003cspan\u003e  Uses built-in Servo.h library\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003e#include\u003c\/span\u003e \u003cspan\u003e\"Servo.h\"\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eSERVO_PIN\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e   \u003cspan\u003e\/\/ Can use any PWM pin\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003ePOT_PIN\u003c\/span\u003e \u003cspan\u003eA0\u003c\/span\u003e    \u003cspan\u003e\/\/ Can use any analog pin\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e   \u003cspan\u003e\/\/ Minimum Servo position\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e \u003cspan\u003e180\u003c\/span\u003e \u003cspan\u003e\/\/ Maximum Servo position\u003c\/span\u003e\n\n\u003cb\u003e\u003cspan\u003eServo\u003c\/span\u003e\u003c\/b\u003e \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e          \u003cspan\u003e\/\/ creates servo object used to control the servo motor\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_pot\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e    \u003cspan\u003e\/\/ Current value of the potentiometer\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Current servo position\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_servo_old\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Used to hold old servo value to look for change.\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eattach\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eSERVO_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ assigns PWM pin to the servo object\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e9600\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e     \u003cspan\u003e\/\/ Set Serial Monitor window comm speed\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003evalue_pot\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eanalogRead\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePOT_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Reads value of the potentiometer. Return value = 0 to 1023\u003c\/span\u003e\n  \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003emap\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_pot\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e1023\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ remap pot value to servo value\u003c\/span\u003e\n  \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e!=\u003c\/span\u003e \u003cspan\u003evalue_servo_old\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e   \u003cspan\u003e\/\/ Only do something if there's a change in the servo position\u003c\/span\u003e\n    \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e        \u003cspan\u003e\/\/ Update servo position\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Pot Value: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Update Serial Monitor window with what's going on\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_pot\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"tServo Value: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003evalue_servo_old\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e25\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ give servo time to move\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003eBEFORE THEY ARE SHIPPED, THESE MOTORS ARE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInspected\u003c\/li\u003e\n\u003cli\u003eBasic operation of servo motor verified\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eTECHNICAL SPECIFICATIONS\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"764\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eMotor Model\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eGeneric SG90 (China)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDrive Type\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eAnalog\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDegree Rotation\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e180° (±15°)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Operating Ratings\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eVoltage\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e4.8-6VDC  (5V Typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (idle)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e10mA (typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (typical during movement)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e100-250mA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (stall)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e360mA (measured)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eStall Torque\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e1.7 kg-cm (measured)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eSpeed\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e0.12s \/ 60 degree (varies with VDC)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Dimensions\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Cable Length\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 24cm  (9.5″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Housing L x W x H\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e23 x 12 x 26mm (0.9 x0 .5 x  1″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Height (w\/ shaft)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e32mm (1.26″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotor Housing Width with Mounting Ears\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e32mm (1.26″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681580736747,"sku":"","price":8.97,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/Servo-SG90_1.jpg?v=1723005567"},{"product_id":"servo-motor-micro-sg92r","title":"Servo Motor Micro SG92R","description":"\u003cp\u003e\u003cspan\u003eUpgraded version of the SG90 with improved gears and torque\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe Servo Motor Micro SG92R is an upgraded version of the ubiquitous SG90 micro servo with improved gears and torque.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e1 SG92R Servo motor with attached 9.5″ control cable\u003c\/li\u003e\n\u003cli\u003e3 arms\/horns for various interface applications\u003c\/li\u003e\n\u003cli\u003eScrews for mounting arms to the servo and mounting the servo\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF SERVO MOTOR MICRO SG92R:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVery small micro size\u003c\/li\u003e\n\u003cli\u003ePOM with carbon fiber gears\u003c\/li\u003e\n\u003cli\u003eStall torque up to 2.5 kg-cm\u003c\/li\u003e\n\u003cli\u003e180 degree rotation\u003c\/li\u003e\n\u003cli\u003eAnalog drive\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe Servo Motor Micro SG92R work well for basic servo experimentation and can be used in applications where small size is a virtue and that don’t require a huge amount of torque, but they are still pretty strong. Gears are POM plastic with carbon fiber particles that improve strength and durability.\u003c\/p\u003e\n\u003cp\u003eServo motors can be commanded to go to a specific position and so are the usual go-to motor when accurate positioning is needed, such as for turning the front wheels on an RC model for steering or pivoting a sensor to look around on a robotic vehicle.\u003c\/p\u003e\n\u003cp\u003eServo motors are comprised of a DC motor, gears, a potentiometer to determine its position and a small electronic control board.\u003c\/p\u003e\n\u003cp\u003eStandard servos have a specified limited range.  This is usually specified as 180 degrees.  Frequently the actual range is not quite the full 180 degrees and is limited by the mechanical gears and potentiometer used for position sensing that is contained in the device.  If the motor is run all the way to 0 or 180, it may start making unhappy sounds and start vibrating as it tries to drive to a position that it cannot get to.  This causes a high stall current condition and has the potential of stripping gears and damaging the motor, so it is best to either drive it to a safely reduced range such as 20-160 or experiment a bit to determine the actual usable range if you want to maximize the range.\u003c\/p\u003e\n\u003cp\u003eServos expect to see a pulse on their PWM pin every 20 mSec.  The pulse is active HIGH and the width of the pulse determines the position (angle) of the servos shaft.  The pulse can vary between 1mSec and 2mSec.  A 1mSec pulse positions the shaft at 0 degrees.  A 1.5mSec pulse positions the shaft at 90 degrees (centered in its range).  A 2 mSec pulse positions the shaft at 180 degrees.  Pulses with values between these can be used to position the shaft arbitrarily.\u003c\/p\u003e\n\u003ch3\u003eMotor Connections\u003c\/h3\u003e\n\u003cp\u003eThe built-in cable has a 3-pin female connector that is usually mated with a standard 0.1″ male header\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e1×3 Female Connector\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eBrown\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Ground\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRed\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= 5V\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOrange\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= PWM Signal\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003chr\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eIn our testing these servos can lift about 5.5lbs that is positioned on an arm 1cm out from the shaft , so they are fairly strong little motors.  We also didn’t have any issues with stripping the gears when pushed to their max.\u003c\/p\u003e\n\u003cp\u003eThe servo runs on 5V nominal with a current draw about 10mA at idle and 100mA to 300mA when being commanded to move depending on how it is being operated.  Current draw can get up to a maximum of 650mA under a stall condition.  One SG92R can typically be driven off the power pin of an Arduino when experimenting, but motors in general are electrically noisy and power hungry devices.  It is always better to drive them directly off of a power supply rather than trying to power from the on-board Arduino regulator whenever possible\u003c\/p\u003e\n\u003cp\u003eIf you do decide to run it directly off the Arduino, you can help avoid most problems by running the power and ground from the Arduino over to a breadboard and then to the servo.  By placing a fairly large electrolytic cap of around 470-1000uF across the power and ground on the breadboard, that will help to insulate the Arduino from some of the power surges of the motor.\u003c\/p\u003e\n\u003cp\u003eThe program below can be used to exercise a servo motor by using a potentiometer to set the position of the servo.  This setup can also be used to determine the limits of the servos range by running the servo near its end-points and observing where it mechanically stops relative to the position command that is being issued.  The constants MIN_VALUE and MAX_VALUE are used to set the 2 end-points in the program below.\u003c\/p\u003e\n\u003ch3\u003eServo Motor Micro SG92R Test Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e  Exercise Servo motor\u003c\/span\u003e\n\u003cspan\u003e  Use a potentiometer on pin A0 to command a servo attached to pin 9 to move to\u003c\/span\u003e\n\u003cspan\u003e  a specific position.  The Servo MIN_VALUE and MAX_VALUE can be adjusted to \u003c\/span\u003e\n\u003cspan\u003e  avoid hitting the servo stops\u003c\/span\u003e\n\u003cspan\u003e  Uses built-in Servo.h library\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003e#include\u003c\/span\u003e \u003cspan\u003e\"Servo.h\"\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eSERVO_PIN\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e   \u003cspan\u003e\/\/ Can use any PWM pin\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003ePOT_PIN\u003c\/span\u003e \u003cspan\u003eA0\u003c\/span\u003e    \u003cspan\u003e\/\/ Can use any analog pin\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e   \u003cspan\u003e\/\/ Minimum Servo position\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e \u003cspan\u003e180\u003c\/span\u003e \u003cspan\u003e\/\/ Maximum Servo position\u003c\/span\u003e\n\n\u003cb\u003e\u003cspan\u003eServo\u003c\/span\u003e\u003c\/b\u003e \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e          \u003cspan\u003e\/\/ creates servo object used to control the servo motor\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_pot\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e    \u003cspan\u003e\/\/ Current value of the potentiometer\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Current servo position\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_servo_old\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Used to hold old servo value to look for change.\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eattach\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eSERVO_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ assigns PWM pin to the servo object\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e9600\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e     \u003cspan\u003e\/\/ Set Serial Monitor window comm speed\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003evalue_pot\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eanalogRead\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePOT_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Reads value of the potentiometer. Return value = 0 to 1023\u003c\/span\u003e\n  \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003emap\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_pot\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e1023\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ remap pot value to servo value\u003c\/span\u003e\n  \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e!=\u003c\/span\u003e \u003cspan\u003evalue_servo_old\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e   \u003cspan\u003e\/\/ Only do something if there's a change in the servo position\u003c\/span\u003e\n    \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e        \u003cspan\u003e\/\/ Update servo position\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Pot Value: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Update Serial Monitor window with what's going on\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_pot\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"tServo Value: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003evalue_servo_old\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e25\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ give servo time to move\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003eBEFORE THEY ARE SHIPPED, THESE MOTORS ARE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInspected\u003c\/li\u003e\n\u003cli\u003eBasic operation of servo motor verified\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eArms and horns may be either black as pictured or white\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eTECHNICAL SPECIFICATIONS\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"827\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eMotor Model\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eGeneric SG92R\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDrive Type\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eAnalog\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDegree Rotation\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e180° (±15°)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Operating Ratings\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eVoltage\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e4.8-6VDC  (5V Typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (idle)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e10mA (typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (typical during movement)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e100-300mA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (stall)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e650mA (measured)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eStall Torque\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e2.5 kg-cm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eSpeed\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e0.10s \/ 60 degree (varies with VDC)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Dimensions\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Cable Length\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 24cm  (9.5″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Housing L x W x H\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e23 x 12.2 x 27mm (0.9 x 0.48 x  1.06″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Height (w\/ shaft)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e32mm (1.26″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotor Housing Width with Mounting Ears\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e32.5mm (1.28″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681582375147,"sku":"","price":9.47,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/Servo-SG92R.jpg?v=1723005556"},{"product_id":"servo-motor-mg995-180-degree-rotation","title":"Servo Motor MG995 180 Degree Rotation","description":"\u003cp\u003e\u003cspan\u003eHigh torque, moderate speed 180 degree servo for medium duty applications\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe Servo Motor MG995 is a standard size servo with a range of 180 degrees with good torque and moderate speed.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eQty 1 – MG995 Servo motor with attached 11″ control cable\u003c\/li\u003e\n\u003cli\u003eQty 4 – Arms\/horns for various interface applications\u003c\/li\u003e\n\u003cli\u003eQty 5 – Screws for mounting\u003c\/li\u003e\n\u003cli\u003eQty 4 – Rubber and brass bushings for mounting\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF SERVO MOTOR MG995:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStandard (medium) size servo\u003c\/li\u003e\n\u003cli\u003eHigh torque of up to 12kg\/cm\u003c\/li\u003e\n\u003cli\u003e180 degree rotation\u003c\/li\u003e\n\u003cli\u003eMetal (Brass \u0026amp; aluminum) gears\u003c\/li\u003e\n\u003cli\u003eAnalog drive\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThese servos have good torque for the cost and work well for experimenting with robotic arms, steering controls and other applications that require a fair amount of grunt.\u003c\/p\u003e\n\u003cp\u003eThe high torque capability comes at the expense of fast speed of movement due to the gearing.  A 60° rotation takes about 0.2 seconds.  That is fine for robotic arm movement or slower speed crawler steering for instance, but too slow for a fast moving RC car or flight controls.\u003c\/p\u003e\n\u003cp\u003eServo motors can be commanded to go to a specific position and so are the usual go-to motor when accurate positioning is needed, such as for turning the front wheels on an RC model for steering or pivoting a sensor to look around on a robotic vehicle.\u003c\/p\u003e\n\u003cp\u003eServo motors are comprised of a DC motor, gears, a potentiometer to determine its position and a small electronic control board.\u003c\/p\u003e\n\u003cp\u003eServos usually have a specified limited range.  This is usually specified as 180 degrees.  Frequently the actual range is not quite the full 180 degrees and is limited by the mechanical gears and potentiometer used for position sensing that is contained in the device.  If the motor is run all the way to 0 or 180, it may start making unhappy sounds and start vibrating as it tries to drive to a position that it cannot get to.  This causes a high stall current condition and has the potential of stripping gears and eventually burning out the drive electronics or damaging the motor, so it is best to either drive it to a safely reduced range such as 20-160 or experiment a bit to determine the actual usable range if you want to maximize the range.\u003c\/p\u003e\n\u003cp\u003eSome versions of the servo may be specified as 360 degree continuous rotation.  In this case, the servo mechanical stops and potentiometer have been removed or disconnected and is designed to rotate continuously in either direction and is primarily used for drive wheels.\u003c\/p\u003e\n\u003cp\u003eServos expect to see a pulse on their PWM pin every 20mSec (50Hz).  The pulse is active HIGH and the width of the pulse determines the position (angle) of the servos shaft.  The pulse can vary between 1mSec and 2mSec.  A 1mSec pulse positions the shaft at 0 degrees.  A 1.5mSec pulse positions the shaft at 90 degrees (centered in its range).  A 2mSec pulse positions the shaft at 180 degrees.  Pulses with values between these can be used to position the shaft arbitrarily.\u003c\/p\u003e\n\u003ch3\u003eMotor Connections\u003c\/h3\u003e\n\u003cp\u003eThe built-in cable has a 3-pin female connector that is usually mated with a male header.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e1×3 Connector\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eBrown\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Ground\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRed\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= 5V\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOrange\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= PWM Signal\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eIn our testing these MG995 servos have been fairly robust and can operate over pretty much the full 180°.\u003ca href=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction.jpg\"\u003e\u003cimg decoding=\"async\" class=\"alignright size-medium wp-image-12215 entered lazyloaded\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-300x225.jpg\" alt=\"Servo MG995 Internal Construction\" width=\"300\" height=\"225\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-249x187.jpg 249w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction.jpg 800w\" data-lazy-sizes=\"(max-width: 300px) 100vw, 300px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-300x225.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 300px) 100vw, 300px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-249x187.jpg 249w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction.jpg 800w\"\u003e\u003c\/a\u003e\u003c\/p\u003e\n\u003cp\u003eConstruction is reasonable, though the motor attachment wires are not well supported, so could eventually break under high vibration operation.  Some epoxy or similar electronic safe potting compound could be applied to them if that is a concern.  The servo opens easily with 4 screws, just be careful not to let the gears fall out or it is a bit of a puzzle to put them back together.\u003c\/p\u003e\n\u003cp\u003eDue to the metal gears, they are somewhat noisy.  On the plus side however, if you are going for a mechanical sounding killer robot, you won’t have to worry about needing to add any artificial sound effects.\u003c\/p\u003e\n\u003cp\u003eThough the label says ‘DIGI HI-SPEED”, the servo is neither digital or high-speed.\u003c\/p\u003e\n\u003cp\u003eThe servo runs on 5V nominal with a current draw of about 10mA at idle and 170mA to 400mA under no load operation.  Current draw can get up to a maximum of about 1.3 to 1.5A under a stall condition.  It is not recommended to try to power one of these directly off of an Arduino board as it is likely to cause erratic behavior.  It is always best to drive them directly off of a separate power supply.\u003c\/p\u003e\n\u003cp\u003eThe program below can be used to exercise a servo motor by using a potentiometer to set the position of the servo.  This setup can also be used to determine the limits of the servos range by running the servo near its end-points and observing where it mechanically stops relative to the position command that is being issued.  The constants MIN_VALUE and MAX_VALUE are used to set the 2 end-points in the program below.\u003c\/p\u003e\n\u003cp\u003eIn the example, the potentiometer wiper is connected to analog input A0 with the other potentiometer pins connected to 5V and ground.  The servo is connected to pin 9.\u003c\/p\u003e\n\u003cp\u003eThe program does some averaging of the readings to reduce the tendency for the servo to hunt or chatter due to analog noise when the potentiometer is not being adjusted.\u003c\/p\u003e\n\u003cp\u003eOnce the program is downloaded, open the Serial Monitor window and set for 9600 baud to see the servo values as the potentiometer is adjusted.\u003c\/p\u003e\n\u003ch3\u003eServo Motor MG995 Test Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e  Exercise Servo motor\u003c\/span\u003e\n\u003cspan\u003e  Use a potentiometer on pin A0 to command a servo attached to pin 9 to move to\u003c\/span\u003e\n\u003cspan\u003e  a specific position.  The Servo MIN_VALUE and MAX_VALUE can be adjusted to \u003c\/span\u003e\n\u003cspan\u003e  avoid hitting the servo stops\u003c\/span\u003e\n\u003cspan\u003e  Uses built-in Servo.h library\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003e#include\u003c\/span\u003e \u003cspan\u003e\"Servo.h\"\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eSERVO_PIN\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e   \u003cspan\u003e\/\/ Can use any PWM pin\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003ePOT_PIN\u003c\/span\u003e \u003cspan\u003eA0\u003c\/span\u003e    \u003cspan\u003e\/\/ Can use any analog pin\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e \u003cspan\u003e3\u003c\/span\u003e   \u003cspan\u003e\/\/ Minimum Servo position\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e \u003cspan\u003e180\u003c\/span\u003e \u003cspan\u003e\/\/ Maximum Servo position\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eAVGNUM\u003c\/span\u003e \u003cspan\u003e25\u003c\/span\u003e     \u003cspan\u003e\/\/ Number of interations to average readings over\u003c\/span\u003e\n\n\u003cb\u003e\u003cspan\u003eServo\u003c\/span\u003e\u003c\/b\u003e \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e          \u003cspan\u003e\/\/ creates servo object used to control the servo motor\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_pot\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e    \u003cspan\u003e\/\/ Current value of the potentiometer\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Current servo position\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_servo_old\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Used to hold old servo value to look for change.\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eavg_value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eattach\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eSERVO_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ assigns PWM pin to the servo object\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e9600\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e     \u003cspan\u003e\/\/ Set Serial Monitor window comm speed\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e \u003cspan\u003e\/\/ Average some readings to help filter out A\/D noise to minimize servo hunting\u003c\/span\u003e\n  \u003cspan\u003efor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e=\u003c\/span\u003e\u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e\u0026lt;\u003c\/span\u003e\u003cspan\u003eAVGNUM\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n   \u003cspan\u003evalue_pot\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eanalogRead\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePOT_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Reads value of the pot (0 to 1023)\u003c\/span\u003e\n   \u003cspan\u003eavg_value\u003c\/span\u003e \u003cspan\u003e+=\u003c\/span\u003e \u003cspan\u003evalue_pot\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n   \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e1\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003eavg_value\u003c\/span\u003e \u003cspan\u003e\/=\u003c\/span\u003e \u003cspan\u003eAVGNUM\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003emap\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eavg_value\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e1023\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ remap pot to servo value\u003c\/span\u003e\n  \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003econstrain\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ constrain within bounds\u003c\/span\u003e\n  \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e!=\u003c\/span\u003e \u003cspan\u003evalue_servo_old\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e   \u003cspan\u003e\/\/ If change, update servo position\u003c\/span\u003e\n    \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e        \u003cspan\u003e\/\/ Send new position to servo\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Pot Value: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Update Serial Monitor window with what's going on\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eavg_value\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"  Servo Value: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003evalue_servo_old\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003eBEFORE THEY ARE SHIPPED, THESE MOTORS ARE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eServo is operated under no load condition back and forth for 5 minutes to verify basic operation.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eTECHNICAL SPECIFICATIONS\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"764\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eMotor Model\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eGeneric MG995 (China)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDrive Type\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eAnalog\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDegree Rotation\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e180° (±10°)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Operating Ratings\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eVoltage\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e4.8-6VDC  (5V Typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (idle)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e10mA (typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (typical during movement)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e170-400mA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (stall)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e1.3 – 1.5A (measured)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eStall Torque\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e12kg-cm (typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eSpeed\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e0.2s \/ 60 degree (varies with VDC)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Dimensions\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Cable Length\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 28cm  (11″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Housing L x W x H\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e40.9 x 20 x 39mm (1.6 x 0 .79 x  1.53″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Height (w\/ shaft)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e45mm (1.77″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotor Housing Width with Mounting Ears\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e54mm (2.13″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681587650795,"sku":"","price":17.37,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/Servo-MG995-180-Degree-Rotation.jpg?v=1723005545"},{"product_id":"servo-motor-mg996-180-degree-rotation","title":"Servo Motor MG996 180 Degree Rotation","description":"\u003cp\u003e\u003cspan\u003eHigh torque, moderate speed 180 degree servo for medium duty applications\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe Servo Motor MG996 is a standard size servo with a range of 180 degrees with good torque and moderate speed.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eQty 1 – MG995 Servo motor with attached 11″ control cable\u003c\/li\u003e\n\u003cli\u003eQty 2 – Arms\/horns for various interface applications\u003c\/li\u003e\n\u003cli\u003eQty 5 – Screws for mounting\u003c\/li\u003e\n\u003cli\u003eQty 4 – Rubber and brass bushings for mounting\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF SERVO MOTOR MG996:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStandard (medium) size servo\u003c\/li\u003e\n\u003cli\u003eHigh torque of up to 13kg\/cm\u003c\/li\u003e\n\u003cli\u003e180 degree rotation\u003c\/li\u003e\n\u003cli\u003eMetal (Brass \u0026amp; aluminum) gears\u003c\/li\u003e\n\u003cli\u003eAnalog drive\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThese servos have good torque for the cost and work well for experimenting with robotic arms, steering controls and other applications that require a fair amount of grunt.  The MG996 has a little more torque than the otherwise very similar MG995.\u003c\/p\u003e\n\u003cp\u003eThe high torque capability comes at the expense of fast speed of movement due to the gearing.  A 60° rotation takes about 0.2 seconds.  That is fine for robotic arm movement or slower speed crawler steering for instance, but too slow for a fast moving RC car or flight controls.\u003c\/p\u003e\n\u003cp\u003eServo motors can be commanded to go to a specific position and so are the usual go-to motor when accurate positioning is needed, such as for turning the front wheels on an RC model for steering or pivoting a sensor to look around on a robotic vehicle.\u003c\/p\u003e\n\u003cp\u003eServo motors are comprised of a DC motor, gears, a potentiometer to determine its position and a small electronic control board.\u003c\/p\u003e\n\u003cp\u003eServos usually have a specified limited range.  This is usually specified as 180 degrees.  Frequently the actual range is not quite the full 180 degrees and is limited by the mechanical gears and potentiometer used for position sensing that is contained in the device.  If the motor is run all the way to 0 or 180, it may start making unhappy sounds and start vibrating as it tries to drive to a position that it cannot get to.  This causes a high stall current condition and has the potential of stripping gears and eventually burning out the drive electronics or damaging the motor, so it is best to either drive it to a safely reduced range such as 20-160 or experiment a bit to determine the actual usable range if you want to maximize the range.\u003c\/p\u003e\n\u003cp\u003eSome versions of the servo may be specified as 360 degree continuous rotation.  In this case, the servo mechanical stops and potentiometer have been removed or disconnected and is designed to rotate continuously in either direction and is primarily used for drive wheels.\u003c\/p\u003e\n\u003cp\u003eServos expect to see a pulse on their PWM pin every 20mSec (50Hz).  The pulse is active HIGH and the width of the pulse determines the position (angle) of the servos shaft.  The pulse can vary between 1mSec and 2mSec.  A 1mSec pulse positions the shaft at 0 degrees.  A 1.5mSec pulse positions the shaft at 90 degrees (centered in its range).  A 2mSec pulse positions the shaft at 180 degrees.  Pulses with values between these can be used to position the shaft arbitrarily.\u003c\/p\u003e\n\u003ch3\u003eMotor Connections\u003c\/h3\u003e\n\u003cp\u003eThe built-in cable has a 3-pin female connector that is usually mated with a male header.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e1×3 Connector\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eBrown\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Ground\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRed\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= 5V\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOrange\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= PWM Signal\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eIn our testing these MG996 servos have been fairly robust and can operate over pretty much the full 180°.\u003ca href=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction.jpg\"\u003e\u003cimg decoding=\"async\" class=\"alignright size-medium wp-image-12215 entered lazyloaded\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-300x225.jpg\" alt=\"Servo MG995 Internal Construction\" width=\"300\" height=\"225\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-249x187.jpg 249w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction.jpg 800w\" data-lazy-sizes=\"(max-width: 300px) 100vw, 300px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-300x225.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 300px) 100vw, 300px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-249x187.jpg 249w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/08\/Servo-MG995-Internal-Construction.jpg 800w\"\u003e\u003c\/a\u003e\u003c\/p\u003e\n\u003cp\u003eConstruction is reasonable.  The servo opens easily with 4 screws, just be careful not to let the gears fall out or it is a bit of a puzzle to put them back together.\u003c\/p\u003e\n\u003cp\u003eDue to the metal gears, they can be somewhat noisy, but not too bad.  On the plus side, if you are going for a mechanical sounding killer robot, you won’t have to worry about needing to add any artificial sound effects.\u003c\/p\u003e\n\u003cp\u003eThough the label says ‘DIGI HI-SPEED”, the servo is neither digital or high-speed.\u003c\/p\u003e\n\u003cp\u003eThe servo runs on 5V nominal with a current draw of about 10mA at idle and 170mA to 400mA under no load operation.  Current draw can get up to a maximum of about 1.3 to 1.5A under a stall condition.  It is not recommended to try to power one of these directly off of an Arduino board as it is likely to cause erratic behavior.  It is always best to drive them directly off of a separate power supply.\u003c\/p\u003e\n\u003cp\u003eThe program below can be used to exercise a servo motor by using a potentiometer to set the position of the servo.  This setup can also be used to determine the limits of the servos range by running the servo near its end-points and observing where it mechanically stops relative to the position command that is being issued.  The constants MIN_VALUE and MAX_VALUE are used to set the 2 end-points in the program below.\u003c\/p\u003e\n\u003cp\u003eIn the example, the potentiometer wiper is connected to analog input A0 with the other potentiometer pins connected to 5V and ground.  The servo is connected to pin 9.\u003c\/p\u003e\n\u003cp\u003eThe program does some averaging of the readings to reduce the tendency for the servo to hunt or chatter due to analog noise when the potentiometer is not being adjusted.\u003c\/p\u003e\n\u003cp\u003eOnce the program is downloaded, open the Serial Monitor window and set for 9600 baud to see the servo values as the potentiometer is adjusted.\u003c\/p\u003e\n\u003ch3\u003eServo Motor MG996 Test Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e  Exercise Servo motor\u003c\/span\u003e\n\u003cspan\u003e  Use a potentiometer on pin A0 to command a servo attached to pin 9 to move to\u003c\/span\u003e\n\u003cspan\u003e  a specific position.  The Servo MIN_VALUE and MAX_VALUE can be adjusted to \u003c\/span\u003e\n\u003cspan\u003e  avoid hitting the servo stops\u003c\/span\u003e\n\u003cspan\u003e  Uses built-in Servo.h library\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003e#include\u003c\/span\u003e \u003cspan\u003e\"Servo.h\"\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eSERVO_PIN\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e   \u003cspan\u003e\/\/ Can use any PWM pin\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003ePOT_PIN\u003c\/span\u003e \u003cspan\u003eA0\u003c\/span\u003e    \u003cspan\u003e\/\/ Can use any analog pin\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e \u003cspan\u003e3\u003c\/span\u003e   \u003cspan\u003e\/\/ Minimum Servo position\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e \u003cspan\u003e180\u003c\/span\u003e \u003cspan\u003e\/\/ Maximum Servo position\u003c\/span\u003e\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eAVGNUM\u003c\/span\u003e \u003cspan\u003e25\u003c\/span\u003e     \u003cspan\u003e\/\/ Number of interations to average readings over\u003c\/span\u003e\n\n\u003cb\u003e\u003cspan\u003eServo\u003c\/span\u003e\u003c\/b\u003e \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e          \u003cspan\u003e\/\/ creates servo object used to control the servo motor\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_pot\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e    \u003cspan\u003e\/\/ Current value of the potentiometer\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Current servo position\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003evalue_servo_old\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Used to hold old servo value to look for change.\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eavg_value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eattach\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eSERVO_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ assigns PWM pin to the servo object\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e9600\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e     \u003cspan\u003e\/\/ Set Serial Monitor window comm speed\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e \u003cspan\u003e\/\/ Average some readings to help filter out A\/D noise to minimize servo hunting\u003c\/span\u003e\n  \u003cspan\u003efor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e=\u003c\/span\u003e\u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e\u0026lt;\u003c\/span\u003e\u003cspan\u003eAVGNUM\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n   \u003cspan\u003evalue_pot\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eanalogRead\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePOT_PIN\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Reads value of the pot (0 to 1023)\u003c\/span\u003e\n   \u003cspan\u003eavg_value\u003c\/span\u003e \u003cspan\u003e+=\u003c\/span\u003e \u003cspan\u003evalue_pot\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n   \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e1\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003eavg_value\u003c\/span\u003e \u003cspan\u003e\/=\u003c\/span\u003e \u003cspan\u003eAVGNUM\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003emap\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eavg_value\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e1023\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ remap pot to servo value\u003c\/span\u003e\n  \u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003econstrain\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMIN_VALUE\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMAX_VALUE\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ constrain within bounds\u003c\/span\u003e\n  \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e \u003cspan\u003e!=\u003c\/span\u003e \u003cspan\u003evalue_servo_old\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e   \u003cspan\u003e\/\/ If change, update servo position\u003c\/span\u003e\n    \u003cspan\u003eservo\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ewrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e        \u003cspan\u003e\/\/ Send new position to servo\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Pot Value: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Update Serial Monitor window with what's going on\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eavg_value\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"  Servo Value: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003evalue_servo_old\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003evalue_servo\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003eBEFORE THEY ARE SHIPPED, THESE MOTORS ARE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eServo is operated under no load condition back and forth for 5 minutes to verify basic operation.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eTECHNICAL SPECIFICATIONS\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"764\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eMotor Model\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eGeneric MG996 (China)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDrive Type\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eAnalog\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDegree Rotation\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e180° (±10°)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Operating Ratings\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eVoltage\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e4.8-6VDC  (5V Typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (idle)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e10mA (typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (typical during movement)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e170-400mA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eCurrent (stall)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e1.3 – 1.5A (measured)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eStall Torque\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e13kg-cm (typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eSpeed\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e0.2s \/ 60 degree (varies with VDC)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Dimensions\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Cable Length\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 28cm  (11″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Housing L x W x H\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e40.9 x 20 x 39mm (1.6 x 0 .79 x  1.53″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Height (w\/ shaft)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e45mm (1.77″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotor Housing Width with Mounting Ears\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e54mm (2.13″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681589911787,"sku":"","price":18.75,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/Servo-MG996-180-Degree-Rotation.jpg?v=1723005533"},{"product_id":"stepper-motor-with-uln2003a-driver-board","title":"Stepper Motor with ULN2003A Driver Board","description":"\u003cp\u003e\u003cspan\u003eSmall unipolar stepper motor comes with a ULN2003A driver board\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThese are small unipolar stepper motors that come with a ULN2003A driver board that work well for smaller applications such as opening and closing a vent or to experiment with stepper motors.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e28BYJ-48 unipolar stepper motor with built-in cable\u003c\/li\u003e\n\u003cli\u003eULN2003 driver board\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF STEPPER MOTOR WITH ULN2003A DRIVER BOARD:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCompact size\u003c\/li\u003e\n\u003cli\u003eUnipolar \/ 4-phase operation\u003c\/li\u003e\n\u003cli\u003e5mm shaft\u003c\/li\u003e\n\u003cli\u003e64:1 gear reduction for good torque capability\u003c\/li\u003e\n\u003cli\u003e5V operation\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe most useful aspect of stepper motors compared to other motors is that the position of the motor shaft can be controlled directly in discrete steps without requiring some type of feedback mechanism to determine position as would be required with something like a standard DC motor.  Other benefits are that they are relatively precise in their movement, they tend to be fairly reliable since they do not use contact brushes in the motor and they generally have good torque even at stand-still which is maintained as long as power is supplied to the motor.  The main downside is that they are a bit power hungry and will consume power even when they are not moving.\u003c\/p\u003e\n\u003cp\u003eStepper motors work by converting electrical pulses into discrete increments of rotation of their shaft.  The motor is 4-phase and requires 4 control inputs.  Pulsing these inputs has several effects on the motor.\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003eThe sequence of the applied pulses determines the direction that the motor shaft turns.\u003c\/li\u003e\n\u003cli\u003eThe frequency of the input pulses determines the speed that the shaft turns.\u003c\/li\u003e\n\u003cli\u003eThe number of the input pulses determines how far the shaft turns.\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003cp\u003eThe motors are model 28BYJ-48 and operate at 5VDC.  The shaft is 5mm with two flat sides.  They have a 64:1 gear reduction, so they have pretty good torque capability.\u003c\/p\u003e\n\u003cp\u003ePower draw is approximately 240mA.  Power is drawn whether the motor is turning or not in order to hold its position, so the motor will be slightly warm whenever power is applied.  Because of the fairly high power draw, it is best to power the stepper motors directly from a 5V power supply rather than drawing that power from the MCU board that is driving it.\u003c\/p\u003e\n\u003cp\u003eThe motor comes with a ULN2003A based driver board.  The ULN2003A is a 7 channel darlington transistor driver of which 4 channels are used on this board.  The board has 4 LEDs that show activity on the 4 control input lines.  It has 2 connectors for making connections as follows:\u003c\/p\u003e\n\u003ch3\u003eMotor \/ Driver Connections:\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003e1 x 6 Header\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eVDD\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Connect to 5V power supply.  Due to high current draw, this should come directly from a power supply and not a microcontroller board.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN1\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Digital input 1 – Connect to a digital output pin on the MCU.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Digital input 2 – Connect to a digital output pin on the MCU.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN3\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Digital input 3 – Connect to a digital output pin on the MCU.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN4\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Digital input 4 – Connect to a digital output pin on the MCU.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGND\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Connect to ground\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1 x 5 White Connector\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eThis is where the motor plugs into.  The connector is keyed, so it only goes in one way.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eThese stepper motors are designed and used for small industrial applications such as opening and closing vanes.  They are a nice inexpensive way to learn about stepper motors and will work fine for many applications that don’t require absolute precision or huge torque loads.  Having the driver electronics make them straightforward to use.\u003c\/p\u003e\n\u003cp\u003eWhen using with an Arduino, the stepper.h library is built into the IDE and makes it straight forward to control stepper motors such as these.\u003c\/p\u003e\n\u003cp\u003eThe program below is a simple test program.  It moves the stepper in both directions and then allows the stepper to be controlled using a potentiometer attached to the Analog 0 pin.  Any other analog sensor could be used.  For instance, using an analog temperature sensor, the stepper could be used to open\/close vanes on an air vent to control temperature in a greenhouse.\u003c\/p\u003e\n\u003cp\u003eThe command  \u003cstrong\u003estepper(STEPS, 8, 10, 9, 11);\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eis used by the stepper library to define which digital pins the motor is connected to on the Arduino.  These can be any 4 digital pins, but we use 8, 9, 10 and 11 in this example.  Note that we have these defined out of sequence based on the wiring to the motor.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eIN1 = D8\u003c\/li\u003e\n\u003cli\u003eIN2 = D9\u003c\/li\u003e\n\u003cli\u003eIN3 = D10\u003c\/li\u003e\n\u003cli\u003eIN4 = D11\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe most likely issue to run into is that the stepper only runs in one direction.  That generally indicates that the wiring to the 4-phases of the motor may be different.  If that happens you can try changing the ordering of the pin assignments in that command.\u003c\/p\u003e\n\u003ch3\u003eStepper Motor with ULN2003A Test Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e * Stepper Motor Test\u003c\/span\u003e\n\u003cspan\u003e *\u003c\/span\u003e\n\u003cspan\u003e * Run the stepper motor CW and CCW one turn to verify wiring\u003c\/span\u003e\n\u003cspan\u003e * then have the stepper motor follow the rotation of a potentiometer\u003c\/span\u003e\n\u003cspan\u003e *\/\u003c\/span\u003e\n\n\u003cspan\u003e#include\u003c\/span\u003e \u003cspan\u003e\u0026lt;\u003c\/span\u003e\u003cb\u003e\u003cspan\u003eStepper\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eh\u003c\/span\u003e\u003cspan\u003e\u0026gt;\u003c\/span\u003e\n\n\u003cspan\u003e#define\u003c\/span\u003e \u003cspan\u003eSTEPS\u003c\/span\u003e \u003cspan\u003e2048\u003c\/span\u003e   \u003cspan\u003e\/\/ change this to the number of steps on your motor\u003c\/span\u003e\n\n\u003cspan\u003e\/\/ create an instance of the stepper class with the number of steps of the motor\u003c\/span\u003e\n\u003cspan\u003e\/\/ and the pins it's attached to.  Note the odd non-sequential pin ordering\u003c\/span\u003e\n\u003cb\u003e\u003cspan\u003eStepper\u003c\/span\u003e\u003c\/b\u003e \u003cspan\u003estepper\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eSTEPS\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e8\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e10\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e11\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eADCPin\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e       \u003cspan\u003e\/\/  Analog pin that potentiometer is connected to.\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eprev\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e         \u003cspan\u003e\/\/  Variable to hold the previous reading from analog input\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ediff\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e         \u003cspan\u003e\/\/  Variable to hold difference between new and previous readings\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e9600\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n  \u003cspan\u003estepper\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003esetSpeed\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e12\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e         \u003cspan\u003e\/\/ set the speed of the motor to 12 RPMs\u003c\/span\u003e\n\n  \u003cspan\u003e\/\/ Run this sequence one time to test the basic motor operation\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"counterclockwise\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003estepper\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003estep\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eSTEPS\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e        \u003cspan\u003e\/\/ step one revolution in one direction:\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e500\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"clockwise\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003estepper\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003estep\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e-\u003c\/span\u003e\u003cspan\u003eSTEPS\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e         \u003cspan\u003e\/\/ step one revolution in the other direction:\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e500\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n   \n  \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eval\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eanalogRead\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eADCPin\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/ get the sensor value from the pot\u003c\/span\u003e\n  \n  \u003cspan\u003eval\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eval\u003c\/span\u003e \u003cspan\u003e*\u003c\/span\u003e \u003cspan\u003e2\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e                  \u003cspan\u003e\/\/ADC range is 0-1023.  Double to match # steps in stepper\u003c\/span\u003e\n\n  \u003cspan\u003ediff\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eval\u003c\/span\u003e \u003cspan\u003e-\u003c\/span\u003e \u003cspan\u003eprev\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e              \u003cspan\u003e\/\/  Calculate the difference between the readings\u003c\/span\u003e\n  \u003cspan\u003ediff\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eabs\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ediff\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e               \u003cspan\u003e\/\/  Convert any negative number to positive\u003c\/span\u003e\n  \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ediff\u003c\/span\u003e \u003cspan\u003e\u0026gt;\u003c\/span\u003e \u003cspan\u003e10\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e                \u003cspan\u003e\/\/  Look for a decent size change to ignore noise on the ADC\u003c\/span\u003e\n     \u003cspan\u003estepper\u003c\/span\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003estep\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eval\u003c\/span\u003e \u003cspan\u003e-\u003c\/span\u003e \u003cspan\u003eprev\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e    \u003cspan\u003e\/\/ move a number of steps equal to the change in the pot\u003c\/span\u003e\n     \u003cspan\u003eprev\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eval\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e                  \u003cspan\u003e\/\/ remember the previous value of the sensor\u003c\/span\u003e\n     \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Pot = \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e      \u003cspan\u003e\/\/ Print the ADC value we are reacting to\u003c\/span\u003e\n     \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eval\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003eBEFORE THEY ARE SHIPPED, THESE MOTORS ARE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSample inspected and tested per incoming shipment.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eTECHNICAL SPECIFICATIONS\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"778\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eMotor Model\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e28BYJ-48\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eOperating Ratings\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Voltage\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e5VDC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Current\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e240mA (typical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e \u003cstrong\u003eNumber of phases\u003c\/strong\u003e\n\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e4\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e \u003cstrong\u003eGear Reduction Ratio\u003c\/strong\u003e\n\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e64:1\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e \u003cstrong\u003eDimensions\u003c\/strong\u003e\n\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Cable Length\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 24cm  (9.5″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Housing Diameter\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e28mm (1.1″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Height (minus shaft)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e20mm (0.8″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotor Housing with Mounting Ears\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e42mm (1.7″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eShaft diameter\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e5mm (3mm on flat sides)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eShaft length\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e8mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eDriver Board (L x W)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e25 x 18mm (1 x 0.7″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681606263019,"sku":"","price":7.37,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/Stepper-Motor-with-ULN2003A-Driver-1.jpg?v=1722237689"},{"product_id":"tb6612fbg-dual-motor-driver-module","title":"TB6612FBG Dual Motor Driver Module","description":"\u003cp\u003e\u003cspan\u003eCan power two DC 4.5-13.5V motors at 1.2A continuous per channel\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThese small TB6612FBG Dual Motor Driver Modules are capable of powering two DC 4.5-13.5V motors at 1.2A continuous current per channel (3.2A peak) while controlling speed and direction.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTB6612FNG Motor Driver Module\u003c\/li\u003e\n\u003cli\u003e2 x 8-pin male headers\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF TB6612FBG DUAL MOTOR DRIVER MODULE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrive 2 DC motors with speed and direction control\u003c\/li\u003e\n\u003cli\u003eDrive 1 bipolar stepper motor\u003c\/li\u003e\n\u003cli\u003eCapable of 1.2A continuous or 3.2A peak per channel\u003c\/li\u003e\n\u003cli\u003eEfficient MOSFET H-Bridge technology for high efficiency\u003c\/li\u003e\n\u003cli\u003e3.3 \u0026amp; 5V compatible\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe logic circuitry operates over a range of 2.7 – 5.5V so it is both 3.3V and 5V compatible.\u003c\/p\u003e\n\u003cp\u003eThe module can also be used to control a single bipolar stepper motor.  Since the module does not provide built-in current limiting, it is best used as a DC motor controller.\u003c\/p\u003e\n\u003cp\u003eThese work well when you want a drive solution for smaller motors that doesn’t require using a full shield.  Being constructed of MOSFET H-bridge technology, they are more efficient and dissipate less heat than older style technology such as the L298.\u003c\/p\u003e\n\u003cp\u003eThe two H-bridges can be run in parallel to double the current handling capability if using with a single DC motor.\u003c\/p\u003e\n\u003cp\u003eThe drivers are rated for up to 1.2A.  If the motors are on the smaller side such as is used on our Smart Car Chassis, two can be easily driven by each of the two drivers.  This can be handy when using with a 4 wheel drive vehicle since you normally want both motors on the same side of the vehicle to be turning in unison anyway and that way one module can be used to drive all 4 wheels.\u003c\/p\u003e\n\u003cp\u003eThe module comes with 2 strips of male headers.  These can be soldered on for use on a breadboard, or you can attach wires directly to the board depending on what your application requires.  If soldering the headers on, it is recommended to insert the headers into a solderless breadboard first to hold them in alignment while soldering the pins.\u003c\/p\u003e\n\u003cp\u003eThe module has the pin-out labeling on the bottom side of the board.  If desired, the headers can be soldered to the top side so that the labeling will be visible when the module is installed on a breadboard or just refer to our handy pic with the pins labeled.\u003c\/p\u003e\n\u003ch3\u003eControl Inputs\u003c\/h3\u003e\n\u003cp\u003eThe\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003eSTBY\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003epin is the enable pin and is active HIGH to enable the motors to operate.  The STBY pin is pulled LOW via a 200K pull-down resistor by default which disables the motors.  To enable the motors to operate, this pin needs to be pulled HIGH.  This can be done either by tying the pin to Vcc or by driving the pin HIGH using an output pin of a uC.\u003c\/p\u003e\n\u003cp\u003eThe\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003ePWMA\/PWMB\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eare PWM inputs for motor speed control.  The PWMA input controls the speed of Motor A and PWMB controls the speed of Motor B.  The higher the PWM value (up to 255) the faster the motor turns.  At low PWM values, there is a point at which the DC motor does not receive enough drive power to cause the motor to turn.  A motor may require a minimum PWM value of 25 or 50 to start turning.  This is best determined experimentally.\u003c\/p\u003e\n\u003cp\u003eThe\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003eAIN1, AIN2, BIN1\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eand\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003eBIN2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eare control pins that determine the configuration of the two H-Bridges in the device.  The AIN1 \/ AIN2 pins control the ‘A’ motor bridge and the BIN1 \/ BIN2 pins control the ‘B’ motor bridge.    The H-Bridge is what controls the direction that the motor turns as shown in the chart below.  It can also be used for on\/off control of desired.\u003cbr\u003e\u003c\/p\u003e\n\u003ctable class=\"table table-bordered\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003e\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eAIN1 \/ (BIN1)\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eAIN2 \/ (BIN2)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eForward Direction\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eReverse Direction\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eBrake \/ Stopped\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eBrake \/ Stopped\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003eNote that the direction that the motors turn (forward vs reverse) with the above commands depends on how the ‘+’ and ‘-‘ leads of  the motors are wired to the module.  If they are turning backwards from what is expected, reverse the motor leads at the module.\u003c\/p\u003e\n\u003ch3\u003eModule Connections\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003e1 x 8 Header (top to bottom left side)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eVM\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor Voltage (4.5 – 13.5V)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVCC\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Logic voltage (2.7 – 5.5V)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGND\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Ground.  There are 3 ground pins which are all tied together on the module.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eA1\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor A connection ‘+’\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eA2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor A connection ‘-‘\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eB1\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor B connection ‘+’\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eB2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor B connection  ‘-‘\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGND\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Ground.  There are 3 ground pins which are all tied together on the module.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1 x 8 Header (top to bottom right side)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003ePWMA\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– PWM pin for Motor A for speed control\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAIN2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– IN2 digital input for Motor A – Connect to a digital output pin on the uC.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAIN1\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– IN1 digital input for Motor A – Connect to a digital output pin on the uC.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSTBY\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Standby.  Has pull-down resistor to ground to disable the driver.  To enable, either tie to Vcc or use logic HIGH from output pin.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBIN1\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– IN1 digital input for Motor B – Connect to a digital output pin on the uC.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBIN2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– IN2 digital input for Motor B – Connect to a digital output pin on the uC.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePWMB\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– PWM pin for Motor B for speed control\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGND\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Ground.  There are 3 ground pins which are all tied together on the module.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eThese modules work well and are straightforward to use.  The logic is easy enough that a library is not needed to implement the software to control them, but there are one or more libraries available should you want to make use of them.\u003c\/p\u003e\n\u003cp\u003eThe program below is a simple program to illustrate the control of DC motors.  It moves the motors through a repeating sequence of running them both forward, then backwards, then in  opposite directions.  It then ramps the motor speed up and then back down in both forwards and reverse directions.  It prints out what it is doing to the Serial Monitor window.\u003c\/p\u003e\n\u003cp\u003eThe AIN1,AIN2, BIN1, BIN2 digital pins can be connected to any digital pins that are available on the uC.  The PWMA and PWMB pins must be connected to PWM pins as we will use them for speed control.\u003c\/p\u003e\n\u003cp\u003eAll of the low level motor control is done in a function called Motor.  The Motor function takes the following inputs:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003emot\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Motor to control.  This can be ‘A’ for motor A or ‘B’ for motor B or ‘C’ to control both.  Note that the single quotes are needed to denote that we are passing type char\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003edir\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Direction of motor.  This can be ‘F’ for forward or ‘R’ for reverse.  Again, but sure to use the single quotes.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003espeed\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Speed of motor.  The value passed to the function is expressed in a range of 0-100%.  That value is remapped to 0-255 for PWM control.  The remapping ignores speed values that are too low to make the motors turn using the constant MIN_SPEED which in our example is set to 27, but 0 still means 0 to stop the motors.  The optimum MIN_SPEED value for a particular setup will depend on the motors being used and the voltage at which they are being powered and is best determined experimentally.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eTB6612FBG Dual Motor Driver Module Example Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e*  TB6612FBG Dual Motor Driver Module Test\u003c\/span\u003e\n\u003cspan\u003e*  Code for exercising the TB6612FBG Motor Control module.\u003c\/span\u003e\n\u003cspan\u003e*  The low level motor control logic is kept in the function 'Motor'\u003c\/span\u003e\n\u003cspan\u003e*  Be sure to tie STBY pin HIGH to enable the device\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003e\/\/  AIN1-2 and BIN1-2 can be connected to any digital pins on uC\u003c\/span\u003e\n\u003cspan\u003e\/\/  PWMA and PWMB must be connected to PWM pins.\u003c\/span\u003e\n\u003cspan\u003e\/\/  Motor A\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003ePWMA\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e10\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Must be PWM pin\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eAIN1\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eAIN2\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e8\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e\/\/  Motor B\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003ePWMB\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e5\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Must be PWM pin\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eBIN1\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e7\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eBIN2\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e6\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eMIN_SPEED\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e27\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/ Set to minimum PWM value that will make motors turn\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eACCEL_DELAY\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e50\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ delay between steps when ramping motor speed up or down.\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWMA\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/ set all the motor control pins to outputs\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWMB\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eAIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eAIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eBIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eBIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e9600\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e     \u003cspan\u003e\/\/ Set comm speed for serial monitor messages\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003e\/\/ This  will run both motors in both directions at a fixed speed\u003c\/span\u003e\n  \u003cspan\u003e\/\/ First go Forward at 75% power for 2 seconds\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e75\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e\/\/ now change motor directions to reverse and run at 75% speed\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e75\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \n  \u003cspan\u003e\/\/ now run motors in opposite directions at same time at 50% speed\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'A'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e50\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'B'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e50\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e\/\/ now turn off both motors\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \n  \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n  \u003cspan\u003e\/\/ Run the motors across the range of possible speeds in both directions\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Maximum speed is determined by the motor itself and the operating voltage\u003c\/span\u003e\n\n  \u003cspan\u003e\/\/ Accelerate from zero to maximum speed\u003c\/span\u003e\n  \u003cspan\u003efor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e\u0026lt;=\u003c\/span\u003e \u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n  \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eACCEL_DELAY\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Decelerate from maximum speed to zero\u003c\/span\u003e\n  \u003cspan\u003efor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e\u0026gt;=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e--\u003c\/span\u003e\u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n  \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eACCEL_DELAY\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Set direction to reverse and accelerate from zero to maximum speed\u003c\/span\u003e\n  \u003cspan\u003efor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e\u0026lt;=\u003c\/span\u003e \u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n  \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eACCEL_DELAY\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Decelerate from maximum speed to zero\u003c\/span\u003e\n  \u003cspan\u003efor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e \u003cspan\u003e\u0026gt;=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e--\u003c\/span\u003e\u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n  \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eACCEL_DELAY\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Turn off motors\u003c\/span\u003e\n  \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003edelay\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2000\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003e * Motor function does all the heavy lifting of controlling the motors\u003c\/span\u003e\n\u003cspan\u003e * mot = motor to control either 'A' or 'B'.  'C' controls both motors.\u003c\/span\u003e\n\u003cspan\u003e * dir = Direction either 'F'orward or 'R'everse\u003c\/span\u003e\n\u003cspan\u003e * speed = Speed.  Takes in 1-100 percent and maps to 0-255 for PWM control.  \u003c\/span\u003e\n\u003cspan\u003e * Mapping ignores speed values that are too low to make the motor turn.\u003c\/span\u003e\n\u003cspan\u003e * In this case, anything below 27, but 0 still means 0 to stop the motors.\u003c\/span\u003e\n\u003cspan\u003e *\/\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eMotor\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003emot\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003edir\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003espeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003e\/\/ remap the speed from range 0-100 to 0-255\u003c\/span\u003e\n  \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003espeed\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n    \u003cspan\u003enewspeed\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/ Don't remap zero, but remap everything else.\u003c\/span\u003e\n  \u003cspan\u003eelse\u003c\/span\u003e\n    \u003cspan\u003enewspeed\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003emap\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003espeed\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eMIN_SPEED\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e255\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n  \u003cspan\u003eswitch\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emot\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'A'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Controlling Motor A\u003c\/span\u003e\n      \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eAIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eAIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eelse\u003c\/span\u003e \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eAIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eAIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWMA\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n    \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'B'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Controlling Motor B\u003c\/span\u003e\n      \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eBIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eBIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eelse\u003c\/span\u003e \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eBIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eBIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWMB\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n    \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e  \u003cspan\u003e\/\/ Controlling Both Motors\u003c\/span\u003e\n      \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eAIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eAIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eBIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eBIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eelse\u003c\/span\u003e \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eAIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eAIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eBIN1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n        \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eBIN2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e}\u003c\/span\u003e\n      \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWMA\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWMB\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003e\/\/ Send what we are doing with the motors out to the Serial Monitor.\u003c\/span\u003e\n  \n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motor: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emot\u003c\/span\u003e\u003cspan\u003e==\u003c\/span\u003e\u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Both\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003eelse\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emot\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"\\t Direction: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edir\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"\\t Speed: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003espeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"\\t Mapped Speed: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003enewspeed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003eBEFORE THEY ARE SHIPPED, THESE MODULES ARE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInspected\u003c\/li\u003e\n\u003cli\u003eSample tested per incoming shipment\u003c\/li\u003e\n\u003cli\u003eRepackaged in quality recloseable ESD bags for safe storage.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eTECHNICAL SPECIFICATIONS\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"764\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eOperating Ratings\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Motor Voltage Range (VM)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 4.5 – 13.5VDC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Logic Voltage Range (VCC)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e2.7 – 5.5VDC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMax Current per Bridge – Continuous\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 1.2A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMax Current per Bridge – Peak\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e3.2A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMaximum PWM Frequency\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e100kHz\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Dimensions\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eDriver Board (L x W x H)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e20 x 20mm (0.8 x 0.8″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDatasheet\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003cspan\u003e\u003cstrong\u003e\u003ca href=\"https:\/\/toshiba.semicon-storage.com\/us\/product\/linear\/motordriver\/detail.TB6612FNG.html\" rel=\"noopener\" target=\"_blank\"\u003eTB6612FBG\u003c\/a\u003e\u003c\/strong\u003e\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681608524011,"sku":"","price":9.87,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/TB6612FNG-Dual-Motor-Driver-Module-1.jpg?v=1723005364"},{"product_id":"vnh3sp30-dual-monster-motor-driver-shield","title":"VNH3SP30 Dual Monster Motor Driver Shield","description":"\u003cp\u003e\u003cspan\u003e2-channel DC motor driver shield that can drive 2 motors at up to 9A sustained.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe VNH3SP30 Dual Monster Motor Driver Shield is a 2-channel DC motor driver shield that can drive 2 motors at up to 9A sustained.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVNH3SP30 Dual Monster Motor Shield\u003c\/li\u003e\n\u003cli\u003eQty 1 – 1×40 breakable male header strip\u003c\/li\u003e\n\u003cli\u003eQty 2 – 8 pin stackable M\/F header strip\u003c\/li\u003e\n\u003cli\u003eQty 2 – 6 pin stackable M\/F header strip\u003c\/li\u003e\n\u003cli\u003eQty 3 – 2-pos 5.08mm screw terminal strip\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF VNH3SP30 DUAL MONSTER MOTOR DRIVER SHIELD:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrive 2 DC motor at 5.5 – 16V\u003c\/li\u003e\n\u003cli\u003e30A peak current, 6-9A sustained per channel.\u003c\/li\u003e\n\u003cli\u003eTwo full H-Bridges with speed control via PWM and direction control\u003c\/li\u003e\n\u003cli\u003eReverse power protection\u003c\/li\u003e\n\u003cli\u003eDiagnostic output to detect thermal shutdown and similar faults.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThis shield is based on the VNH3SP30-E driver chip. These devices were originally designed to drive motors in automotive power seats, so they are designed to handle a fair amount of power.  They technically can handle up to 30A continuous with good heat sinking applied.\u003c\/p\u003e\n\u003cp\u003eIn a typical shield format like used here, you can go up to 20A peak for a few seconds of in-rush current and around 6-9A sustained depending on motor drive voltage.\u003c\/p\u003e\n\u003cp\u003eThese are a good choice when you are either using larger motors or just want to take your motor control to the next level over what a more typical driver module can provide.\u003c\/p\u003e\n\u003cp\u003eWhen used with DC motors, the H-Bridge drive arrangement allows the direction of the rotation of the motors to be changed.  In addition PWM can be used to control the speed of the motors.  This gives full control over the DC motors.\u003c\/p\u003e\n\u003ch3\u003eMotor Power Connections\u003c\/h3\u003e\n\u003cp\u003eMotor voltage must be between 5.5 – 16V.  The manufacturer rates the chip for up to 36V operation but it should be limited to 16V to avoid possible issues that sometimes arise with higher voltages.\u003c\/p\u003e\n\u003cp\u003eThe module has reverse power protection via the use of N-Channel MOSFETS on the low side of the drivers.  5V which comes from the Arduino is only used for logic pull-ups on the board for the ENABLE pins.  There are two unpopulated thru-hole capacitor locations on the board.  These are in parallel with the two 470uF SMD caps that go across the motor Vcc and Gnd connections.  In some high current applications it may be beneficial to add additional capacitors of 470uF or larger to these locations, but they are typically not needed.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e     1 x 2 Terminal (Motor Power)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003e‘+’\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Motor Vcc which must be between 5.5 and 16V.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e‘-‘\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Motor Ground.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMotor Connections\u003c\/h3\u003e\n\u003cp\u003eThe motor connections are via two screw terminals for each motor.  Multiple motors can be driven off each connection as long as the total current stays within bounds.\u003c\/p\u003e\n\u003cp\u003eThe wiring of which lead of the motor connects to which terminal is somewhat arbitrary and relative to what you consider forward vs reverse motor operation.  If the motor goes in the opposite direction that you expect, simply reverse the wiring.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e     1 x 2 Terminal (Motor 1)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eA1\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor 1 ‘-‘ positive lead\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eB1\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor 1 ‘+’ negative lead\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003e     1 x 2 Terminal (Motor 2)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eA2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor 2 ‘-‘ positive lead\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eB2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor 2 ‘+’ negative lead\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMotor Control Pins\u003c\/h3\u003e\n\u003cp\u003eThe pins\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003eA1\/A2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eand\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003eB1\/B2\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003ecorrespond to the INA and INB pins on the driver IC which control the state of the H-Bridge in the device.  The basic modes are to rotate CW, rotate CCW or brake.  The operation is per the table below\u003c\/p\u003e\n\u003ctable class=\"table table-bordered\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003e\u003c\/td\u003e\n\u003ctd width=\"213\"\u003e\u003cstrong\u003eA1 \/ (A2)\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"213\"\u003e\u003cstrong\u003eB1 \/ (B2)\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eForward Direction (CW)\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eReverse Direction (CCW)\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eStopped (Brake to GND)\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eStopped (Brake to VCC)\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003ch4\u003eArduino to Shield Control Pin Connections\u003c\/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eD4\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= A2\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eD5\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= PWM Motor 1\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eD6\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= PWM Motor 2\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eD7\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= A1\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eD8\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= B1\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eD9\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= B2\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThese connections are automatically made when the board is used in a shield configuration.  If wiring discretely, these pins can be reassigned as needed.\u003c\/p\u003e\n\u003ch3\u003eEN\/DIAG Pins\u003c\/h3\u003e\n\u003cp\u003eThese pins serve a dual purpose and are bi-directional.  First they are the Enable pins for the device and are active HIGH.  The module has pull-ups on these pins, so if left unconnected or set as inputs, the drivers will always be enabled.  If the pins are being used to enable\/disable the drivers, they need to be driven HIGH to enable the devices.\u003c\/p\u003e\n\u003cp\u003eThe second purpose they serve is to indicate a fault such as a thermal shutdown.  If that should occur, the pins are driven LOW by the module.  See the truth table in the datasheet below on page 15 for operation of the DIAG function.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e      Arduino to Shield EN\/DIAG Pin Connections\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eA0\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= EN\/DIAG 1\u003cstrong\u003e\u003cbr\u003e\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eA1\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= EN\/DIAG 2\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eAssembling the Board\u003c\/h3\u003e\n\u003cp\u003eWe provide this board as a kit with male headers, stackable male\/female headers as well as terminal blocks for power and motor connections.  This gives you the flexibility to configure the board to use as a stand-alone, or as a shield that fits on top of an Arduino Uno, Mega 2560 or similar board with the ability to mount a daughter board on top or use jumpers.\u003c\/p\u003e\n\u003cp\u003eIf using the screw terminals for the motor connections, it is recommended to cut the pins off flush with the board before soldering.  On some Arduino boards, the USB and ICSP connectors can come close to these pins, so cutting them off provides additional clearance.\u003c\/p\u003e\n\u003cp\u003eIf using as a shield, use some care to ensure the stackable header pins are held straight during the soldering process so that they will align with the Arduino female headers.  It is generally easiest to insert the stackable headers into the shield and then insert those partway into the female headers on an Arduino to keep everything aligned.  By inserting them only partway, that leaves more room for the soldering iron tip without melting the connectors.  Flip the boards over and tack solder the end pins using a small soldering iron tip to keep the connectors in place and aligned.  Carefully remove the shield and finish soldering all the pins from the bottom side of the board.\u003c\/p\u003e\n\u003cp\u003e\u003cimg decoding=\"async\" class=\"aligncenter wp-image-8794 size-full entered exited\" alt=\"VNH3SP30 Monster Motor Shield - Soldering\" width=\"506\" height=\"281\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/VNH3SP30-Monster-Motor-Shield-Soldering-rotated-e1588540665619.jpg 506w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/VNH3SP30-Monster-Motor-Shield-Soldering-rotated-e1588540665619-300x167.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/VNH3SP30-Monster-Motor-Shield-Soldering-rotated-e1588540665619-280x155.jpg 280w, https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/VNH3SP30-Monster-Motor-Shield-Soldering-rotated-e1588540665619-400x222.jpg 400w\" data-lazy-sizes=\"(max-width: 506px) 100vw, 506px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2018\/04\/VNH3SP30-Monster-Motor-Shield-Soldering-rotated-e1588540665619.jpg\" src=\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MDYgMjgxIj48L3N2Zz4=\"\u003e\u003c\/p\u003e\n\u003cp\u003eThe male header pins are superfluous in most applications, but can be installed in place of the stackable headers if using the module mainly for breadboard testing or using point to point wiring.\u003c\/p\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eThese modules work very well and are straightforward to use for basic motor control.\u003c\/p\u003e\n\u003cp\u003eOur test results for thermal performance vs motor current indicates that a constant current of 6-9A is about the most that can be pulled before some heat sinking is applied and will vary depending on the motor drive voltage being used.  Tmax on the case is 150C.  Below are some thermal results of the case temperature under different loads at constant current @ 12VDC.\u003c\/p\u003e\n\u003cp\u003e2A = 35C\u003cbr\u003e3A = 50C\u003cbr\u003e4A = 65C\u003cbr\u003e5A = 92C\u003cbr\u003e6A = 115C\u003c\/p\u003e\n\u003cp\u003eIf using the devices with PWM, the current handling capability is higher.  At 50% PWM, the current handling capability will be about double but the power delivered to the motors will be the same.  These chips can also handle a fairly significant power on current surge of 20A for 8 seconds before they start to overheat.\u003c\/p\u003e\n\u003cp\u003eIf you want to optimize the power handling capability, adding a good heat sink and perhaps a fan blowing across it will give you some head room.  If you are driving just one motor with it, you can parallel the two drivers which will basically double the current handling capability.\u003c\/p\u003e\n\u003cp\u003eIf you are familiar with the common L298N motor drivers, the basic control logic is very similar and is easy enough that a library is not needed to implement the software to control them though there are some libraries available up on GitHub if you want to go that route.\u003c\/p\u003e\n\u003cp\u003eIt does get a little more tricky when working with the DIAG (Diagnostics) functions.  A review of the datasheet will help in understanding that function better.  These can be nice to have features for incorporating feedback of the system status into your code.  For instance, you can tell if a motor driver has gone into thermal shutdown.\u003c\/p\u003e\n\u003cp\u003eThe program below illustrates the basic use of this module.  It allows the user to enter commands via the Serial Monitor window to control the functions of the motors.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eS\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Stop motors\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eF\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Forward direction\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eR\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Reverse direction\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePxxx\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Sets the PWM speed from 0 (P0) to 255 (P255)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eP?\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Returns the current PWM setting\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eNote that you can use upper or lower case letters when entering commands.\u003c\/p\u003e\n\u003cp\u003eTo run a basic test just plug the shield onto the Arduino Uno or similar MCU.  Hook motor power of 5.5 to 16V up to the motor power terminal block and hook 2 DC motors up to the 2 motor terminal blocks.  Download the code and start typing commands.\u003c\/p\u003e\n\u003cp\u003eNote that the pin connections in the program are dictated by the shield and cannot be changed when using it as a shield.\u003c\/p\u003e\n\u003ch3\u003eVNH3SP30 Dual Monster Motor Driver Shield Example Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003eExercise Monster Motor Shield\u003c\/span\u003e\n\u003cspan\u003eUses Serial Monitor window to issue commands for controlling the DC motors \u003c\/span\u003e\n\u003cspan\u003econnected to the shield\u003c\/span\u003e\n\u003cspan\u003eS = Stop\u003c\/span\u003e\n\u003cspan\u003eF = Forward\u003c\/span\u003e\n\u003cspan\u003eR = Reverse\u003c\/span\u003e\n\u003cspan\u003eC = Returns the current reading of the motors\u003c\/span\u003e\n\u003cspan\u003ePxxx (P0 - P255) sets the PWM speed value\u003c\/span\u003e\n\u003cspan\u003eP? = Returns the current PWM value\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eMOTOR_1\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eMOTOR_2\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e1\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eBRAKE\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eCW\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e1\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eCCW\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e2\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003eNote:  the pin definitions below are set by the shield pinout. If using\u003c\/span\u003e\n\u003cspan\u003ethe board as a shield, these pins must remain as specified below.\u003c\/span\u003e\n\u003cspan\u003eIf wiring the board rather than using as a shield, these can be changed. *\/\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eMOTOR_A1_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e7\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/Motor 1 control inputs\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eMOTOR_A2_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e4\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eMOTOR_B1_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e8\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Motor 2 control inputs\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eMOTOR_B2_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e9\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ePWM_MOTOR_1\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e5\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ePWM_MOTOR_2\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e6\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e\/\/const int EN_PIN_1 = A0;\u003c\/span\u003e\n\u003cspan\u003e\/\/const int EN_PIN_2 = A1;\u003c\/span\u003e\n\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003emotor_Speed\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e150\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/default motor speed\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003emotor_State\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eBRAKE\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n\u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003e4\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ String array to hold PWM value typed in on keyboard\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWM_MOTOR_1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWM_MOTOR_2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e\/\/pinMode(EN_PIN_1, OUTPUT);      \/\/ Uncomment these 4 lines to use the Enable pins\u003c\/span\u003e\n  \u003cspan\u003e\/\/pinMode(EN_PIN_2, OUTPUT);      \/\/ to enable\/disable the device.  \u003c\/span\u003e\n                                    \u003cspan\u003e\/\/ To monitor for fault conditions instead, they \u003c\/span\u003e\n                                    \u003cspan\u003e\/\/ would be defined as inputs\u003c\/span\u003e\n \u003cspan\u003e\/\/ digitalWrite(EN_PIN_1, HIGH);  \/\/ Set EN pins high to enable drivers\u003c\/span\u003e\n \u003cspan\u003e\/\/ digitalWrite(EN_PIN_2, HIGH); \u003c\/span\u003e\n  \n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e9600\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e           \u003cspan\u003e\/\/ Initialize serial monitor\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Enter command:\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e    \u003cspan\u003e\/\/ Printout commands\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"S = STOP\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"F = FORWARD\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"R = REVERSE\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Pxxx = PWM SPEED (P000 - P254)\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"P? = RETURNS CURRENT PWM SPEED\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n\u003cspan\u003e\/\/ Just loop while monitoring the serial port and then jump to DoSerial to\u003c\/span\u003e\n\u003cspan\u003e\/\/ handle incoming characters and act on them\u003c\/span\u003e\n\u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eavailable\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003eDoSerial\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Subroutine to handle characters typed via Serial Monitor Window\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eDoSerial\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eindex\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003epwm_Value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \n  \u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003ech\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eread\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Read the character we know we have\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ech\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e       \u003cspan\u003e\/\/ Echo character typed to show we got it\u003c\/span\u003e\n\n  \u003cspan\u003e\/\/ Use Switch\/Case statement to handle the different commands\u003c\/span\u003e\n  \u003cspan\u003eswitch\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ech\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'f'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Motor FORWARD command\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ This fall-through case statement accepts upper and lower case\u003c\/span\u003e\n    \u003cspan\u003emotor_State\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eCW\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_Speed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_Speed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motors Forward\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'r'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Motor REVERSE command\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003emotor_State\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eCCW\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_Speed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_Speed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motors Reverse\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n   \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e's'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Motor STOP command\u003c\/span\u003e\n   \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'S'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003emotor_State\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eBRAKE\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motors Stop\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'p'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e  \u003cspan\u003e\/\/ Motor SPEED command\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'P'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003e\/\/ This command is a little trickier.  We are looking for a number from 0-255\u003c\/span\u003e\n    \u003cspan\u003e\/\/ to follow this command so we can set the PWM speed.  If we see a '?'\u003c\/span\u003e\n    \u003cspan\u003e\/\/ we will report our current speed setting, otherwise we start collecting chars\u003c\/span\u003e\n    \u003cspan\u003e\/\/ into the readString array.\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Give time for more characters to arrive.\u003c\/span\u003e\n    \u003cspan\u003efor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e\u0026lt;\u003c\/span\u003e\u003cspan\u003e4\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e' '\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Clear string array\u003c\/span\u003e\n    \u003cspan\u003ewhile\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eavailable\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e  \u003cspan\u003e\/\/ Read what we get and put into the string array\u003c\/span\u003e\n    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003ec\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eread\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003eindex\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003ec\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003eindex\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003e3\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e'\\0'\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Append null to end of string array to make it a valid string\u003c\/span\u003e\n    \u003cspan\u003eindex\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e            \u003cspan\u003e\/\/ Reset our index back to the start of the string\u003c\/span\u003e\n    \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003eindex\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'?'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e   \u003cspan\u003e\/\/ ? means report our current speed setting and exit.\u003c\/span\u003e\n    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Current PWM Setting: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emotor_Speed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003epwm_Value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eatoi\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Try to convert string into integer\u003c\/span\u003e\n    \u003cspan\u003e\/\/ We assume a 0 value is because of a non-valid input and ignore the command\u003c\/span\u003e\n    \u003cspan\u003eif\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003epwm_Value\u003c\/span\u003e\u003cspan\u003e!=\u003c\/span\u003e\u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e   \n      \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003epwm_Value\u003c\/span\u003e \u003cspan\u003e\u0026gt;\u003c\/span\u003e \u003cspan\u003e255\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003epwm_Value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e255\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e     \u003cspan\u003e\/\/ Cap WPM setting at 255\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003epwm_Value\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e        \u003cspan\u003e\/\/ Echo what we end up with to confirm we got it\u003c\/span\u003e\n      \u003cspan\u003emotor_Speed\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003epwm_Value\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_Speed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_Speed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \n  \u003cspan\u003edefault\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003emotor\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eDIR\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ePWM\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e     \u003cspan\u003e\/\/Function that writes to the motors\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eif\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emotor\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003eMOTOR_1\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n  \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003eif\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eDIR\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003eCW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003eelse\u003c\/span\u003e \u003cspan\u003eif\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eDIR\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003eCCW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e      \n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003eelse\u003c\/span\u003e    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e            \n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWM_MOTOR_1\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003ePWM\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \n  \u003cspan\u003e}\u003c\/span\u003e\n  \u003cspan\u003eelse\u003c\/span\u003e \u003cspan\u003eif\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emotor\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003eMOTOR_2\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n  \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003eif\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eDIR\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003eCW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003eelse\u003c\/span\u003e \u003cspan\u003eif\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eDIR\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003eCCW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e      \n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003eelse\u003c\/span\u003e    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B2_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e            \n    \u003cspan\u003e}\u003c\/span\u003e \n    \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWM_MOTOR_2\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003ePWM\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003e\u003cstrong\u003eBEFORE THEY ARE SHIPPED, THESE MODULES ARE:\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInspected \u0026amp; kitted\u003c\/li\u003e\n\u003cli\u003ePackaged in quality resealable ESD bags for safe storage.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eTECHNICAL SPECIFICATIONS\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"758\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eOperating Ratings\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eVoltage Range\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMotors\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 5.5 – 16VDC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eMax Current per bridge\u003c\/td\u003e\n\u003ctd width=\"264\"\u003ePeak\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e30A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eSustained without heat sinking\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e6-9A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eSustained with adequate heat sinking\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e12-14A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eMOSFET\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eON resistance (per leg)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e34mΩ (typ)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eMax PWM Frequency\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e10kHz\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003e Dimensions\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eDriver Board (L x W)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e61 x 54mm (2.4 x 2.1″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eDatasheet\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eST Microelectronics\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003ca href=\"https:\/\/www.st.com\/resource\/en\/datasheet\/vnh3sp30-e.pdf\" rel=\"noopener noreferrer\" target=\"_blank\"\u003e\u003cspan\u003e\u003cstrong\u003eVNH3SP30-E\u003c\/strong\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681611866347,"sku":"","price":37.37,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/VNH3SP30-Monster-Motor-Shield.jpg?v=1723005357"},{"product_id":"vnh2sp30-single-monster-motor-driver-module","title":"VNH2SP30 Single Monster Motor Driver Module","description":"\u003cp\u003e\u003cspan\u003eThe VNH2SP30 Single Monster Motor Driver Module can drive motors up to 12A sustained with adequate heat sinking and 6A without a heat sink..\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThe VNH2SP30 Single Monster Motor Driver Module can drive motors up to 12A sustained with adequate heat sinking and 6A without a heat sink.\u003c\/p\u003e\n\u003ch2\u003ePACKAGE INCLUDES:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVNH2SP30 Single Monster Motor Module\u003c\/li\u003e\n\u003cli\u003e1 x 40 snappable male header strip\u003c\/li\u003e\n\u003cli\u003e2 x 2-pos 5.08mm screw terminal strip\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eKEY FEATURES OF VNH2SP30 SINGLE MONSTER MOTOR DRIVER MODULE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrive 1 DC motor at 5.5 – 16V\u003c\/li\u003e\n\u003cli\u003e30A peak current, 12A sustained with adequate heat sink and 6A with no heat sink.\u003c\/li\u003e\n\u003cli\u003eFull H-Bridge with speed control via PWM and direction control\u003c\/li\u003e\n\u003cli\u003eReverse power protection\u003c\/li\u003e\n\u003cli\u003eDrive current monitoring capability\u003c\/li\u003e\n\u003cli\u003eDiagnostic output to detect thermal shutdown and similar faults.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThis module is a 1-channel DC motor driver based on the VNH2SP30-E driver chip.  These devices were originally designed to drive motors in automotive power seats, so they are designed to handle a fair amount of power and can go up to 30A peak and around 12-14A sustained with adequate heat sinking.  Without heat sinking, current should be limited to 6A.\u003c\/p\u003e\n\u003cp\u003eBesides high current handling capability, the device provides the ability to measure motor current and provide fault status.  These are a great choice when you are either using larger motors or just want to take your motor control to the next level over what a more typical driver module can provide.\u003c\/p\u003e\n\u003cp\u003eWhen used with DC motors, the H-Bridge drive arrangement allows the direction of the rotation of the motors to be changed.  In addition PWM can be used to control the speed of the motors.  This gives full control over the DC motors.\u003c\/p\u003e\n\u003ch3\u003eMotor Power Connections\u003c\/h3\u003e\n\u003cp\u003eMotor voltage must be between 5.5 – 16V.  The module has reverse power protection via the use of N-Channel MOSFET on the low side of the driver.  5V which comes from the microcontroller is only used for logic pull-ups on the board for the ENABLE pins.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e     1 x 2 Terminal (Motor Power)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003e‘+’\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Motor Vcc which must be between 5.5 and 16V.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e‘-‘\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Motor Ground.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMotor Connections\u003c\/h3\u003e\n\u003cp\u003eThe motor connections are via two screw terminals.  Multiple motors can be driven off the connection as long as the total current stays within bounds and you want the motors to be doing the same thing i.e. same direction and speed.\u003c\/p\u003e\n\u003cp\u003eThe wiring of which lead of the motor connects to which terminal is somewhat arbitrary and relative to what you consider forward vs reverse motor operation.  If the motor goes in the opposite direction that you expect, simply reverse the wiring.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e     1 x 2 Terminal (Motor)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eOUTA\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor ‘-‘ positive lead\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOUTB\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Motor ‘+’ negative lead\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMotor Control Pins\u003c\/h3\u003e\n\u003cp\u003eThe\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003eINA\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eand\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003eINB\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003epins control the state of the H-Bridge in the device.  The basic modes are to rotate CW, rotate CCW or brake.  The operation is per the table below\u003c\/p\u003e\n\u003ctable class=\"table table-bordered\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003e\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eINA\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eINB\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eForward Direction (CW)\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eReverse Direction (CCW)\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eStopped (Brake to GND)\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eLOW\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"213\"\u003eStopped (Brake to VCC)\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003ctd width=\"213\"\u003eHIGH\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003ch3\u003eCS Current Sense Pins\u003c\/h3\u003e\n\u003cp\u003eThe analog voltage output provides a representation of the amount of current being drawn by the motor.  Accuracy of the current sensing reading is approximately 10%.  They are less accurate at lower currents such as around 150mA and more accurate at higher currents.  In addition, the reading may vary a bit depending on the direction that the motor is turning as the sensing circuits are different depending on the direction of rotation of the motor.\u003c\/p\u003e\n\u003cp\u003eIf used, this output should be connected to an analog input pin.\u003c\/p\u003e\n\u003cp\u003eThere is a small 33nF cap on the module to help filter the PWM pulse noise out of the current sense output.  This is inadequate in most cases and the reading may be erratic.  A 1 to 10uF or so capacitor between these pins and ground will usually provide adequate filtering to get reliable readings.\u003c\/p\u003e\n\u003ch3\u003eEN\/DIAG Pins\u003c\/h3\u003e\n\u003cp\u003eThese pins serve a dual purpose and are bi-directional.  First they are the Enable pins for the device and are active HIGH.  The module has pull-ups on these pins, so if left unconnected or set as inputs, the drivers will always be enabled.  If the pins are being used to enable\/disable the drivers, they need to be driven HIGH to enable the devices.\u003c\/p\u003e\n\u003cp\u003eThe second purpose they serve is to indicate a fault such as a thermal shutdown.  If that should occur, the pins are driven LOW by the module.  See the truth table in the datasheet linked below on page 15 for operation of the DIAG function.\u003c\/p\u003e\n\u003ch2\u003eOUR EVALUATION RESULTS:\u003c\/h2\u003e\n\u003cp\u003eThese modules work very well and are straightforward to use for basic motor control.\u003c\/p\u003e\n\u003cp\u003eOur test results for thermal performance vs motor current indicates that 6A is about the most that can be pulled before some heat sinking is applied.  Tmax on the case is 150C.  Below are some thermal results of the case temperature under different loads.\u003c\/p\u003e\n\u003cp\u003e2A = 35C\u003cbr\u003e3A = 50C\u003cbr\u003e4A = 65C\u003cbr\u003e5A = 92C\u003cbr\u003e6A = 115C\u003c\/p\u003e\n\u003cp\u003eIf you are familiar with the common L298N motor drivers, the basic control logic is very similar and is easy enough that a library is not needed to implement the software to control them though there are some libraries available up on GitHub if you want to go that route.\u003c\/p\u003e\n\u003cp\u003eIt does get a little more tricky when working with the CS (current sensing) and DIAG (Diagnostics) functions.  A review of the datasheet will help in understanding these functions better.  These can be nice to have features for incorporating feedback of the system status into your code.  For instance, you can tell if a motor has been stalled or if the device has gone into thermal shutdown.\u003c\/p\u003e\n\u003cp\u003eThe program below illustrates the basic use of this module.  It allows the user to enter commands via the Serial Monitor window to control the functions of the motors.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eS\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Stop motors\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eF\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Forward direction\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eR\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Reverse direction\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eC\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Return the current readings from the motors\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePxxx\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Sets the PWM speed from 0 (P0) to 255 (P255)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eP?\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e= Returns the current PWM setting\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eNote that you can use upper or lower case letters when entering commands.\u003c\/p\u003e\n\u003cp\u003eThe pins used are defined in the program, but can be changed as needed for the uC you are using:\u003c\/p\u003e\n\u003cp\u003ePin 7 = Motor A1\u003cbr\u003ePin 8 = Motor B1\u003cbr\u003ePin 5 = Motor PWM.  Needs to be a PWM capable pin\u003cbr\u003ePin A0 = Diagnostic Output.  Can be any analog pin\u003cbr\u003ePin A2 = Current Sense.  Can be any analog pin\u003c\/p\u003e\n\u003ch3\u003eVNH2SP30 Single Monster Motor Driver Module Example Program\u003c\/h3\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cspan\u003e\/*\u003c\/span\u003e\n\u003cspan\u003eExercise Monster Motor Mini Module\u003c\/span\u003e\n\u003cspan\u003eUses Serial Monitor window to issue commands for controlling the DC motor\u003c\/span\u003e\n\u003cspan\u003econnected to the module\u003c\/span\u003e\n\u003cspan\u003eS = Stop\u003c\/span\u003e\n\u003cspan\u003eF = Forward\u003c\/span\u003e\n\u003cspan\u003eR = Reverse\u003c\/span\u003e\n\u003cspan\u003eC = Returns the current reading of the motors\u003c\/span\u003e\n\u003cspan\u003ePxxx (P0 - P255) sets the PWM speed value\u003c\/span\u003e\n\u003cspan\u003eP? = Returns the current PWM value\u003c\/span\u003e\n\u003cspan\u003e*\/\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eBRAKE\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eCW\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e1\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eCCW\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e2\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eCS_THRESHOLD\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e15\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eMOTOR_A1_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e7\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/Motor control input pins\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eMOTOR_B1_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e8\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ePWM_MOTOR\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e5\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e      \u003cspan\u003e\/\/ Motor PWM input pin\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eCURRENT_SENSE\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eA2\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Current sense pin\u003c\/span\u003e\n\u003cspan\u003econst\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eEN_PIN\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eA0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e        \u003cspan\u003e\/\/ Enable\/Diag pin\u003c\/span\u003e\n\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003emotor_Speed\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e150\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e    \u003cspan\u003e\/\/Default motor speed\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003emotor_State\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eBRAKE\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Current motor state\u003c\/span\u003e\n\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003emot_current\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e      \u003cspan\u003e\/\/ Motor current\u003c\/span\u003e\n\n\u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003e4\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e   \u003cspan\u003e\/\/ String array to hold PWM value typed in on keyboard\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Initialization\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003esetup\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003epinMode\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWM_MOTOR\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eOUTPUT\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003e\/\/ Uncomment the next 2 lines to use the Enable pins to enable\/disable the device.\u003c\/span\u003e\n      \u003cspan\u003e\/\/ To monitor for fault conditions instead, they would be defined as inputs  \u003c\/span\u003e\n \u003cspan\u003e\/\/ pinMode(EN_PIN, OUTPUT);      \u003c\/span\u003e\n \u003cspan\u003e\/\/ digitalWrite(EN_PIN, HIGH);  \u003c\/span\u003e\n  \n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003ebegin\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e9600\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e           \u003cspan\u003e\/\/ Initialize serial monitor\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Enter command:\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e    \u003cspan\u003e\/\/ Printout commands\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"S = STOP\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"F = FORWARD\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"R = REVERSE\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"C = READ MOTOR CURRENT\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Pxxx = PWM SPEED (P000 - P254)\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"P? = RETURNS CURRENT PWM SPEED\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Main\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eloop\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n\u003cspan\u003e\/\/ Just loop while monitoring the serial port and then jump to DoSerial to\u003c\/span\u003e\n\u003cspan\u003e\/\/ handle incoming characters and act on them\u003c\/span\u003e\n\u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eavailable\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003eDoSerial\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003e\/\/  Subroutine to handle characters typed via Serial Monitor Window\u003c\/span\u003e\n\u003cspan\u003e\/\/===============================================================================\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eDoSerial\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003eindex\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003epwm_Value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003emot1_ADC\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003efloat\u003c\/span\u003e \u003cspan\u003emot1_voltage\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0.0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \n  \u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003ech\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eread\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Read the character we know we have\u003c\/span\u003e\n  \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ech\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e       \u003cspan\u003e\/\/ Echo character typed to show we got it\u003c\/span\u003e\n\n  \u003cspan\u003e\/\/ Use Switch\/Case statement to handle the different commands\u003c\/span\u003e\n  \u003cspan\u003eswitch\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ech\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'f'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Motor FORWARD command\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'F'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ This fall-through case statement accepts upper and lower case\u003c\/span\u003e\n    \u003cspan\u003emotor_State\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eCW\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_Speed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motor Forward\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'r'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Motor REVERSE command\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'R'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003emotor_State\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eCCW\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_Speed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motor Reverse\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n   \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e's'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Motor STOP command\u003c\/span\u003e\n   \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'S'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003emotor_State\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eBRAKE\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motor Stop\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \n   \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'c'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e   \u003cspan\u003e\/\/ Motor Current command\u003c\/span\u003e\n   \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'C'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003emot1_ADC\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eanalogRead\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eCURRENT_SENSE\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003emot1_voltage\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003emot1_ADC\u003c\/span\u003e \u003cspan\u003e*\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e5.0\u003c\/span\u003e \u003cspan\u003e\/\u003c\/span\u003e \u003cspan\u003e1024\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Motor 1 Current: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emot1_voltage\u003c\/span\u003e \u003cspan\u003e*\u003c\/span\u003e \u003cspan\u003e26\u003c\/span\u003e\u003cspan\u003e*\u003c\/span\u003e\u003cspan\u003e100\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\" mA\"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'p'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e  \u003cspan\u003e\/\/ Motor SPEED command\u003c\/span\u003e\n  \u003cspan\u003ecase\u003c\/span\u003e \u003cspan\u003e'P'\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003e\/\/ This command is a little trickier.  We are looking for a number from 0-255\u003c\/span\u003e\n    \u003cspan\u003e\/\/ to follow this command so we can set the PWM speed.  If we see a '?'\u003c\/span\u003e\n    \u003cspan\u003e\/\/ we will report our current speed setting, otherwise we start collecting chars\u003c\/span\u003e\n    \u003cspan\u003e\/\/ into the readString array.\u003c\/span\u003e\n    \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Give time for more characters to arrive.\u003c\/span\u003e\n    \u003cspan\u003efor\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e\u0026lt;\u003c\/span\u003e\u003cspan\u003e4\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003ei\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e' '\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Clear string array\u003c\/span\u003e\n    \u003cspan\u003ewhile\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eavailable\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e  \u003cspan\u003e\/\/ Read what we get and put into the string array\u003c\/span\u003e\n    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003echar\u003c\/span\u003e \u003cspan\u003ec\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eread\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003eindex\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003ec\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003eindex\u003c\/span\u003e\u003cspan\u003e++\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003edelay\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e2\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003e3\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e''\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \u003cspan\u003e\/\/ Append null to end of string array to make it a valid string\u003c\/span\u003e\n    \u003cspan\u003eindex\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e            \u003cspan\u003e\/\/ Reset our index back to the start of the string\u003c\/span\u003e\n    \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e[\u003c\/span\u003e\u003cspan\u003eindex\u003c\/span\u003e\u003cspan\u003e]\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003e'?'\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e   \u003cspan\u003e\/\/ ? means report our current speed setting and exit.\u003c\/span\u003e\n    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprint\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003e\"Current PWM Setting: \"\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emotor_Speed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003epwm_Value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003eatoi\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ereadString\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e  \u003cspan\u003e\/\/ Try to convert string into integer\u003c\/span\u003e\n    \u003cspan\u003e\/\/ We assume a 0 value is because of a non-valid input and ignore the command\u003c\/span\u003e\n    \u003cspan\u003eif\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003epwm_Value\u003c\/span\u003e\u003cspan\u003e!=\u003c\/span\u003e\u003cspan\u003e0\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003e{\u003c\/span\u003e   \n      \u003cspan\u003eif\u003c\/span\u003e \u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003epwm_Value\u003c\/span\u003e \u003cspan\u003e\u0026gt;\u003c\/span\u003e \u003cspan\u003e255\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e \u003cspan\u003epwm_Value\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003e255\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e     \u003cspan\u003e\/\/ Cap WPM setting at 255\u003c\/span\u003e\n      \u003cb\u003e\u003cspan\u003eSerial\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e.\u003c\/span\u003e\u003cspan\u003eprintln\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003epwm_Value\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e        \u003cspan\u003e\/\/ Echo what we end up with to confirm we got it\u003c\/span\u003e\n      \u003cspan\u003emotor_Speed\u003c\/span\u003e \u003cspan\u003e=\u003c\/span\u003e \u003cspan\u003epwm_Value\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003emotor_State\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003emotor_Speed\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \n  \u003cspan\u003edefault\u003c\/span\u003e\u003cspan\u003e:\u003c\/span\u003e\n    \u003cspan\u003ebreak\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n  \u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003evoid\u003c\/span\u003e \u003cspan\u003eMotor_Cmd\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003edirect\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eint\u003c\/span\u003e \u003cspan\u003epwm\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e     \u003cspan\u003e\/\/Function that writes to the motors\u003c\/span\u003e\n\u003cspan\u003e{\u003c\/span\u003e\n  \u003cspan\u003e{\u003c\/span\u003e\n    \u003cspan\u003eif\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edirect\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003eCW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003eelse\u003c\/span\u003e \u003cspan\u003eif\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003edirect\u003c\/span\u003e \u003cspan\u003e==\u003c\/span\u003e \u003cspan\u003eCCW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eHIGH\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e      \n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003eelse\u003c\/span\u003e    \u003cspan\u003e{\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_A1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e\n      \u003cspan\u003edigitalWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003eMOTOR_B1_PIN\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003eLOW\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e            \n    \u003cspan\u003e}\u003c\/span\u003e\n    \u003cspan\u003eanalogWrite\u003c\/span\u003e\u003cspan\u003e(\u003c\/span\u003e\u003cspan\u003ePWM_MOTOR\u003c\/span\u003e\u003cspan\u003e,\u003c\/span\u003e \u003cspan\u003epwm\u003c\/span\u003e\u003cspan\u003e)\u003c\/span\u003e\u003cspan\u003e;\u003c\/span\u003e \n  \u003cspan\u003e}\u003c\/span\u003e\n\u003cspan\u003e}\u003c\/span\u003e\n\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003e\u003cstrong\u003eBEFORE THEY ARE SHIPPED, THESE MODULES ARE:\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInspected\u003c\/li\u003e\n\u003cli\u003eBasic operation of driver verified\u003c\/li\u003e\n\u003cli\u003eRepackaged in quality recloseable ESD bags for safe storage.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eTECHNICAL SPECIFICATIONS\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"758\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eOperating Ratings\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e Voltage range (Vcc)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e 5.5 – 16VDC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMax current per bridge (peak)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e30A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eMax current per bridge (sustained)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e12-14A (with heat sinking)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e Dimensions\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eDriver Board (L x W)\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e55 x 29mm (2.2 x 1.1″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003eDatasheet\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003ca href=\"http:\/\/www.st.com\/resource\/en\/datasheet\/cd00043711.pdf\" rel=\"noopener\" target=\"_blank\"\u003e\u003cspan\u003e\u003cstrong\u003eVNH2SP30-E\u003c\/strong\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681613242603,"sku":"","price":34.97,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/VNH2SP30-Single-Monster-Motor-Module.jpg?v=1723005347"},{"product_id":"servo-tester","title":"Servo Tester","description":"\u003cp\u003e\u003cspan\u003eSimple tester for servo motors or ECS\u003c\/span\u003e\u003c\/p\u003e\n\u003ch2\u003eDESCRIPTION\u003c\/h2\u003e\n\u003cp\u003eThese are handy little devices for anyone that works with servos. They provide a simple way to test a servo to verify if it works or to exercise a servo built into a project such as a robotic arm without needing to do any programming.  It can also be handy for embedding into a simple project such as a Halloween prop where you want the prop to continuously swing back and forth.  They can also be used as a PWM input to an ESC (Electronic Speed Controller).\u003c\/p\u003e\n\u003ch2\u003e\u003cstrong\u003ePACKAGE INCLUDES:\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eServo Tester Module\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003e\u003cstrong\u003eKEY FEATURES OF SERVO TESTER:\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e3 modes of operation\n\u003cul\u003e\n\u003cli\u003eManual position mode using adjustment knob\u003c\/li\u003e\n\u003cli\u003eReturn to center\u003c\/li\u003e\n\u003cli\u003eAuto sweep back and forth\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003eOutput connectors for up to 3 servos\u003c\/li\u003e\n\u003cli\u003eCan use as input for ESC to test operation\u003c\/li\u003e\n\u003cli\u003e4.8-6V operation and output pulse amplitude\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eTheory of Operation\u003c\/h3\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look.jpg\"\u003e\u003cimg decoding=\"async\" class=\"alignright wp-image-11228 size-medium entered lazyloaded\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look-300x225.jpg\" alt=\"Servo Tester - Inside Look\" width=\"300\" height=\"225\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look-249x187.jpg 249w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look.jpg 800w\" data-lazy-sizes=\"(max-width: 300px) 100vw, 300px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look-300x225.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 300px) 100vw, 300px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look-300x225.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look-768x576.jpg 768w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look-249x187.jpg 249w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look-400x300.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Inside-Look.jpg 800w\"\u003e\u003c\/a\u003eThe picture to the right shows what’s inside the module on the bottom side of the board so you’re not tempted to rip the enclosure off to see what is inside.\u003c\/p\u003e\n\u003cp\u003eThe 8-pin IC appears to be a microcontroller with the markings removed.  There are a bunch of 470 ohm resistors for providing current limiting for the three LEDs as well as the three PWM outputs.  The PWM outputs each have their own current limiting resistor, but they are all driven off the same signal.\u003c\/p\u003e\n\u003cp\u003eThe power and ground pins on the input side pass straight through to the power and ground pins on the servo connectors with a few filtering caps thrown in.  Since the servos operate at 4.8 to 6V, the input needs to be fed with a power source between 4.8 and 6V.\u003c\/p\u003e\n\u003ch3\u003eInputs\u003c\/h3\u003e\n\u003cp\u003eThe input side is a 3-pin male header.  Power is connected to ‘\u003cstrong\u003e+\u003c\/strong\u003e‘ and ground is connected to ‘\u003cstrong\u003e–\u003c\/strong\u003e‘.  Current draw from the power supply will depend on the servo(s) being driven.\u003c\/p\u003e\n\u003cp\u003eThe ‘\u003cstrong\u003eS’ (\u003c\/strong\u003esignal) pin on the input side is not connected to anything and can be left unconnected.\u003c\/p\u003e\n\u003ch3\u003eOutputs\u003c\/h3\u003e\n\u003cp\u003eThe output is a 3×3 male header.\u003c\/p\u003e\n\u003cp\u003eUp to 3 servos can be connected by a plugging the connectors in horizontally across the row of 3 pins.  The servo brown (ground) wire goes to ‘\u003cstrong\u003e–\u003c\/strong\u003e‘, the servo red (power) wire goes to ‘\u003cstrong\u003e+\u003c\/strong\u003e‘ and the servo yellow\/orange (signal) wire goes ‘\u003cstrong\u003eS\u003c\/strong\u003e‘.\u003c\/p\u003e\n\u003ch2\u003eMODES OF OPERATION\u003c\/h2\u003e\n\u003cp\u003eThere are 3 modes of operation. The blue LEDs indicate the currently active mode and the\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003eSELECT\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003ebutton toggles between the different modes. When the device first powers up, the\u003cspan\u003e \u003c\/span\u003e\u003cstrong\u003eManual\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003emode is selected.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMAN\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Manual Mode. Turning the knob controls the position of the servo. This is handy for testing the functionality of the servo in an application without having to setup an MCU with software.  If a servo is connected to the elbow of a mechanical arm, the arm can be exercised through its range using the control knob.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNEUTRAL\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Returns the servo to the center position.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAUTO\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e– Runs the servo continuously through its full range left and right approximately once per second. This can be handy for testing servos over time or to automate the movement of a device such as a prop that needs to swing back and forth.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eNote: \u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eThis device is only designed to work with servos or as a PWM input to an ECS (Electronic Speed Control) unit. It is designed to drive a low current PWM output and simply pass power and ground through. It is not suitable to try to control DC motors directly using PWM as it cannot provide the necessary current.\u003c\/em\u003e\u003c\/p\u003e\n\u003ch2\u003eMODULE CONNECTIONS\u003c\/h2\u003e\n\u003cp\u003eInput\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cb\u003e–\u003cspan\u003e \u003c\/span\u003e\u003c\/b\u003e=  Ground\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003e+\u003c\/b\u003e=  Power (4.8 – 6VDC)\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eS\u003cspan\u003e \u003c\/span\u003e\u003c\/b\u003e= No connect\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eOutput to servo or ECS (x3)\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cb\u003e–\u003cspan\u003e \u003c\/span\u003e\u003c\/b\u003e=  Ground\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003e+\u003c\/b\u003e=  Power (4.8 – 6VDC)\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eS\u003cspan\u003e \u003c\/span\u003e\u003c\/b\u003e= PWM Output\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003e\u003cstrong\u003eOUR EVALUATION RESULTS:\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cp\u003eThese are simple yet clever little boxes that can be quite useful. We use them to exercise servos back and forth for extended periods of time when we are doing basic testing or to experiment with motion of articulated assemblies without having to mess around with hooking up an MCU and writing code.\u003cimg decoding=\"async\" class=\"alignright size-full wp-image-15451 entered lazyloaded\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Test-Setup.jpg\" alt=\"Servo Test Setup\" width=\"400\" height=\"278\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Test-Setup.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Test-Setup-300x209.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Test-Setup-269x187.jpg 269w\" data-lazy-sizes=\"(max-width: 400px) 100vw, 400px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Test-Setup.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 400px) 100vw, 400px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Test-Setup.jpg 400w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Test-Setup-300x209.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Test-Setup-269x187.jpg 269w\"\u003e\u003c\/p\u003e\n\u003cp\u003eThe packaging is an example of how to manufacture a device as cheaply as possible and it looks a bit like a plastic match box but it gets the job done.\u003c\/p\u003e\n\u003cp\u003eThe main criticism of the tester is that it will not necessarily exercise a servo through its full range of motion.  To avoid overdriving servos it keeps the PWM within a safe range.  That may mean that a 180° servo will only rotate 150° using this tester.\u003c\/p\u003e\n\u003cp\u003eHere is a simple setup we made using one of these modules to exercise many servos at once.  It was taken out of the packaging and the output pins were soldered into one of our prototyping boards.  The module gets power through these output pins and the signal output is run to a row of header pins along with 5V and Gnd.  Power is supplied from an external bench power supply.\u003c\/p\u003e\n\u003ch3\u003eTroubleshooting Tips\u003c\/h3\u003e\n\u003cp\u003eIf the blue LEDs flicker during servo operation and the servo acts erratic, that generally indicates that the power to the unit doesn’t have enough current capability. We have seen this when we had the current limit set too low on our bench power supply.\u003c\/p\u003e\n\u003cp\u003eIf the device seems to reset on handling, it is usually due to intermittent power connections. We have seen this when using old breadboard jumpers that have gotten sloppy and tend to make intermittent contact when wiggled.\u003c\/p\u003e\n\u003cp\u003eIf the servo is a larger servo and seems to be responding poorly, ensure the power wiring isn’t dropping too much voltage. If the power supply is 5V, it is easy to get \u0026lt; 4.8V at the servo if using breadboard jumpers. In that case either use larger wiring to reduce the voltage drop or increase the 5V up to a maximum of 6V.\u003c\/p\u003e\n\u003cp\u003eBelow is a scope capture of a typical PWM waveform output with 5V power input.\u003c\/p\u003e\n\u003cp\u003e\u003cimg decoding=\"async\" class=\"aligncenter wp-image-11230 size-full entered lazyloaded\" alt=\"Servo Tester Waveform\" width=\"581\" height=\"165\" data-lazy-srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Waveform.jpg 581w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Waveform-300x85.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Waveform-280x80.jpg 280w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Waveform-400x114.jpg 400w\" data-lazy-sizes=\"(max-width: 581px) 100vw, 581px\" data-lazy-src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Waveform.jpg\" src=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Waveform.jpg\" data-ll-status=\"loaded\" sizes=\"(max-width: 581px) 100vw, 581px\" srcset=\"https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Waveform.jpg 581w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Waveform-300x85.jpg 300w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Waveform-280x80.jpg 280w, https:\/\/protosupplies.com\/wp-content\/uploads\/2021\/04\/Servo-Tester-Waveform-400x114.jpg 400w\"\u003e\u003c\/p\u003e\n\u003cpre class=\"copy-the-code-target\"\u003e\u003cbutton class=\"copy-the-code-button\" data-style=\"svg-icon\" title=\"Copy\"\u003e\u003csvg aria-hidden=\"true\" role=\"img\" class=\"copy-icon\" viewbox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" focusable=\"false\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/pre\u003e\n\u003ch2\u003e\u003cstrong\u003eBEFORE THEY ARE SHIPPED, THESE MODULES ARE:\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSample inspected and tested per incoming shipment.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cem\u003eNotes: \u003c\/em\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ci\u003eNone\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eTECHNICAL SPECIFICATIONS\u003c\/h2\u003e\n\u003ctable class=\"table table-hover\" width=\"871\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eOperational Ratings\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e    Vcc\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eRange\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e4.8 – 6VDC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e    Frequency\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e49Hz measured (50Hz nominal)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e    PWM Pulse Amplitude\u003c\/td\u003e\n\u003ctd width=\"264\"\u003e\u003c\/td\u003e\n\u003ctd width=\"229\"\u003eSame as Vcc\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"145\"\u003e\u003cstrong\u003eDimensions\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"264\"\u003eL x W x H w\/out pins\u003c\/td\u003e\n\u003ctd width=\"229\"\u003e35 x 31 x 24mm (1.38 x 1.22 x 0.95″)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!----\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":45681613734123,"sku":"","price":6.87,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/Servo-Tester.jpg?v=1723005334"},{"product_id":"stepper-motor-driver-module-with-heat-sink-drv8825-a4988-expansion-board-for-3d-printer-arduino-uno-and-ramps-1-4-diy-projects","title":"Stepper Motor Driver Module with Heat Sink ¨C DRV8825 \/ A4988 Expansion Board for 3D Printer, Arduino UNO and RAMPS 1.4 DIY Projects","description":"\u003ch1\u003eSPECIFICATIONS\u003c\/h1\u003e\u003cp\u003e\u003cspan\u003eApplication\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eComputer\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eBlack board size\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e42.8*42.5*11.7mm\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eBrand Name\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eKeszoox\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eCondition\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNew\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eDissipation Power\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e1\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eHigh-concerned chemical\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNone\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOperating Temperature\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e1\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOrigin\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMainland China\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003ePackage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eSMD\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eQuantity\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e1\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eRed board size\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e41.6*34.2*10.1mm\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSupply Voltage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e1\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eType\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eVoltage Regulator\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eis_customized\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eYes\u003c\/span\u003e\u003c\/p\u003e\u003cdiv class=\"detailmodule_text-image\"\u003e\n\u003cp style=\"font-family:OpenSans;font-size:20px;font-weight:900;line-height:28px;white-space:pre-wrap;color:rgb(0, 0, 0);margin-bottom:12px\" class=\"detail-desc-decorate-title\"\u003eSpecial Reminder:\u003c\/p\u003e\n\u003cp style=\"font-family:OpenSans;font-size:14px;font-weight:300;line-height:20px;white-space:pre-wrap;color:rgb(0, 0, 0);margin-bottom:12px\" class=\"detail-desc-decorate-content\"\u003ePay close attention to the orientation during installation. Incorrect installation may damage the driver or even the motherboard.\u003c\/p\u003e\n\u003cdiv\u003e\u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S5bf70cf06c83431c9fe2d9ebf0d993a6D.png\" slate-data-type=\"image\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003cdiv class=\"detailmodule_text-image\"\u003e\u003cp style=\"font-family:OpenSans;font-size:14px;font-weight:300;line-height:20px;white-space:pre-wrap;color:rgb(0, 0, 0);margin-bottom:12px\" class=\"detail-desc-decorate-content\"\u003eName:\u003cbr\u003e4988\/8825 Stepper Motor Driver Module Expansion Board\u003cbr\u003eSpecifications:\u003cbr\u003e?Size: 42 ¡Á 42 ¡Á 15 mm\u003cbr\u003e?Mounting: 3 mm\u003cbr\u003e?Hole Spacing: 1400 ¡Á 1400 mil (35.56 ¡Á 35.56 mm)\u003cbr\u003e?Logic Voltage: 5V\u003cbr\u003e?Input Voltage: 12-30V\u003cbr\u003e?Port Type: Digital\u003cbr\u003e?Interface: Direction, Enable, Speed\u003cbr\u003e?Compatible Modules: A4988, DRV8825\u003c\/p\u003e\u003c\/div\u003e\u003cdiv class=\"detailmodule_text-image\"\u003e\n\u003cp style=\"font-family:OpenSans;font-size:20px;font-weight:900;line-height:28px;white-space:pre-wrap;color:rgb(0, 0, 0);margin-bottom:12px\" class=\"detail-desc-decorate-title\"\u003eNote:\u003c\/p\u003e\n\u003cp style=\"font-family:OpenSans;font-size:14px;font-weight:300;line-height:20px;white-space:pre-wrap;color:rgb(0, 0, 0);margin-bottom:12px\" class=\"detail-desc-decorate-content\"\u003eWhen installing the driver module, ensure correct orientation to avoid damaging the module.\u003cbr\u003eThis product is an expansion board only and does not include 4988\/8825 driver modules.\u003c\/p\u003e\n\u003c\/div\u003e\u003cdiv class=\"detailmodule_text-image\"\u003e\n\u003cp style=\"font-family:OpenSans;font-size:20px;font-weight:900;line-height:28px;white-space:pre-wrap;color:rgb(0, 0, 0);margin-bottom:12px\" class=\"detail-desc-decorate-title\"\u003eProduct Introduction:\u003c\/p\u003e\n\u003cp style=\"font-family:OpenSans;font-size:14px;font-weight:300;line-height:20px;white-space:pre-wrap;color:rgb(0, 0, 0);margin-bottom:12px\" class=\"detail-desc-decorate-content\"\u003e1.Compatible with A4988\/DRV8825 drivers. Pay attention to the direction when inserting, as incorrect orientation may damage the driver.\u003cbr\u003e2.Set all jumpers to the ON DP position for 16 microsteps (A4988) or 32 microsteps (DRV8825).\u003cbr\u003e3.Connect the motor to JM.\u003cbr\u003e4.Connect the 5V and 12V-24V power supply to JV.\u003cbr\u003e5.JC's E\\S\\D\\G correspond to Enable\\Step\\Dir\\GND for driver signal output.\u003c\/p\u003e\n\u003cdiv\u003e\n\u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sdaf6e889071242c5b876d7b5350dcb63t.png\" slate-data-type=\"image\"\u003e\u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sed5843b6019f44f48b4392a7c6a6fe636.png\" slate-data-type=\"image\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003cdiv class=\"detailmodule_text-image\"\u003e\n\u003cp style=\"font-family:OpenSans;font-size:20px;font-weight:900;line-height:28px;white-space:pre-wrap;color:rgb(0, 0, 0);margin-bottom:12px\" class=\"detail-desc-decorate-title\"\u003eContact Us\u003c\/p\u003e\n\u003cp style=\"font-family:OpenSans;font-size:14px;font-weight:300;line-height:20px;white-space:pre-wrap;color:rgb(0, 0, 0);margin-bottom:12px\" class=\"detail-desc-decorate-content\"\u003eIf You Have Any Questions, Please Feel Free To Contact Us. Our Office Hours Are Monday To Friday (Except Holidays).\u003cbr\u003eIf You Send An Email Outside Business Hours And Don¡¯t Receive A Reply, Rest Assured We Will Respond On The Next Business Day.\u003c\/p\u003e\n\u003cdiv\u003e\u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sfbc518e390764cb0bbf08f06f648df31g.jpg\" slate-data-type=\"image\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003cbr\u003e","brand":"Keszoox","offers":[{"title":"Red board \/ CHINA","offer_id":46978922545387,"sku":"14:1202#Red board;200007763:201336100","price":2.68,"currency_code":"USD","in_stock":true},{"title":"Black board \/ CHINA","offer_id":46978922578155,"sku":"14:350852#Black board;200007763:201336100","price":2.92,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/stepper-motor-driver-module-drv8825-a4988.webp?v=1761029518"},{"product_id":"2000w-scr-pwm-motor-speed-controller-ac220v","title":"2000W SCR PWM Motor Speed Controller – AC 220V Voltage Regulator for Dimmer \u0026 Thermostat","description":"\u003ch2\u003e2000W SCR PWM Motor Speed Controller – AC 220V Voltage Regulator\u003c\/h2\u003e\u003cp\u003eControl motor speed, lamp brightness, and heating elements with precision using this 2000W SCR-based PWM voltage regulator. Designed for AC 220V systems, it delivers smooth, stepless control via a built-in potentiometer — ideal for DIY electronics, industrial automation, and home appliance modification.\u003c\/p\u003e\u003ch3\u003eKey Specifications\u003c\/h3\u003e\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eInput Voltage\u003c\/td\u003e\n\u003ctd\u003eAC 220V (50\/60Hz)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMax Power\u003c\/td\u003e\n\u003ctd\u003e2000W\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eControl Method\u003c\/td\u003e\n\u003ctd\u003eSCR (Silicon Controlled Rectifier) + PWM\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOutput\u003c\/td\u003e\n\u003ctd\u003eAdjustable AC voltage\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eControl Range\u003c\/td\u003e\n\u003ctd\u003e~10%–100% of input voltage\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMounting\u003c\/td\u003e\n\u003ctd\u003eScrew terminals, panel-mountable\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\u003ch3\u003eWhy Choose This Controller?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e✅ High-power 2000W capacity — handles motors, heaters, and dimmers\u003c\/li\u003e\n\u003cli\u003e✅ SCR + PWM hybrid control for smooth, stable output\u003c\/li\u003e\n\u003cli\u003e✅ Compact module design — easy to integrate into enclosures\u003c\/li\u003e\n\u003cli\u003e✅ Wide compatibility with resistive and inductive loads\u003c\/li\u003e\n\u003cli\u003e✅ Simple single-knob operation — no programming required\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eApplications\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003eDC\/AC motor speed control (fans, pumps, drills)\u003c\/li\u003e\n\u003cli\u003eLamp and LED dimmer circuits\u003c\/li\u003e\n\u003cli\u003eThermostat and heating element control\u003c\/li\u003e\n\u003cli\u003eDIY power tools and workshop equipment\u003c\/li\u003e\n\u003cli\u003eIndustrial automation prototyping\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eCompatible With\u003c\/h3\u003e\u003cp\u003eWorks with most AC 220V resistive and inductive loads including universal motors, incandescent lamps, heating coils, and soldering stations. Compatible with Arduino-based relay control systems for automated switching.\u003c\/p\u003e\u003ch3\u003eFAQ\u003c\/h3\u003e\u003cp\u003e\u003cstrong\u003eQ: Can this control a DC motor?\u003c\/strong\u003e\u003cbr\u003eA: No — this module is designed for AC 220V loads only. For DC motor control, use a PWM DC motor driver module.\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003eQ: Is it safe to use with inductive loads like fans?\u003c\/strong\u003e\u003cbr\u003eA: Yes, but add a snubber circuit for highly inductive loads to protect the SCR from voltage spikes.\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003eQ: What is the minimum load it can control?\u003c\/strong\u003e\u003cbr\u003eA: Minimum recommended load is approximately 100W for stable operation.\u003c\/p\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\u003cli\u003e1× 2000W SCR PWM Motor Speed Controller Module\u003c\/li\u003e\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"2000W SCR with Cable","offer_id":46981888409835,"sku":"14:200000195#2000W SCR with Cable","price":10.8,"currency_code":"USD","in_stock":true},{"title":"2000W SCR","offer_id":46981888442603,"sku":"14:350852#2000W SCR","price":9.56,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/2000w-ac-pwm-motor-speed-controller-scr-regulator.webp?v=1761116063"},{"product_id":"pwm-dc-motor-speed-controller-6v-28v-3a-80w-adjustable","title":"PWM DC Motor Speed Controller 6V–28V 3A 80W Adjustable 0–100% Duty Cycle with Potentiometer Switch","description":"\u003ch2\u003ePWM DC Motor Speed Controller — 6V–28V 3A 80W Adjustable Duty Cycle\u003c\/h2\u003e\n\n\u003cp\u003eTake precise control of any DC motor, fan, or LED load with this \u003cstrong\u003ePWM (Pulse Width Modulation) speed controller\u003c\/strong\u003e. By adjusting the duty cycle from 0% to 100% via the onboard potentiometer, you can smoothly vary motor speed, fan airflow, or LED brightness without the heat and energy waste of resistive voltage dividers. The wide 6V–28V input range and 3A\/80W capacity make it compatible with a broad range of DC motors and loads.\u003c\/p\u003e\n\n\u003ch3\u003eSpecifications\u003c\/h3\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eInput Voltage\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eDC 6V – 28V\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eMax Continuous Current\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e3A\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eMax Output Power\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e80W\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eDuty Cycle\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e0% – 100% (fully adjustable)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eControl Method\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003ePotentiometer (onboard knob)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eSwitch\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eBuilt-in on\/off switch\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOperating Temperature\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e-40°C to +85°C\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePackage\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eSMD construction\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eModel\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e3A 80W PWM\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOrigin\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eMainland China\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\u003ch3\u003eHow PWM Speed Control Works\u003c\/h3\u003e\n\u003cp\u003ePWM control rapidly switches the motor power on and off at a fixed frequency. By varying the ratio of on-time to off-time (duty cycle), the average voltage delivered to the motor changes — controlling speed without the energy loss of resistive methods. At 50% duty cycle, the motor receives approximately half voltage; at 100%, full voltage. This method is highly efficient and generates minimal heat in the controller.\u003c\/p\u003e\n\n\u003ch3\u003eWiring Guide\u003c\/h3\u003e\n\u003col\u003e\n  \u003cli\u003e\n\u003cstrong\u003eConnect power supply:\u003c\/strong\u003e Connect your DC power supply positive (+) to the controller’s VIN+ terminal and negative (−) to GND.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eConnect motor\/load:\u003c\/strong\u003e Connect the motor or load positive (+) to the controller’s OUT+ terminal and negative (−) to OUT−.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePower on:\u003c\/strong\u003e Toggle the built-in switch to ON.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eAdjust speed:\u003c\/strong\u003e Turn the potentiometer knob clockwise to increase duty cycle (higher speed\/brightness), counter-clockwise to decrease.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eFine-tune:\u003c\/strong\u003e For precise control, use a multimeter to measure output voltage while adjusting the potentiometer.\u003c\/li\u003e\n\u003c\/ol\u003e\n\n\u003ch3\u003eWhy Choose This PWM Controller?\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eWide voltage range 6V–28V\u003c\/strong\u003e — compatible with 6V, 12V, 24V DC systems\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eFull 0–100% duty cycle\u003c\/strong\u003e — complete speed range from stopped to full speed\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003e3A \/ 80W capacity\u003c\/strong\u003e — handles most small to medium DC motors and fan loads\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eBuilt-in on\/off switch\u003c\/strong\u003e — convenient power control without disconnecting wiring\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eHigh efficiency\u003c\/strong\u003e — PWM method wastes minimal energy as heat vs. resistive control\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eWide temperature range\u003c\/strong\u003e — -40°C to +85°C for industrial and outdoor applications\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eCompact SMD design\u003c\/strong\u003e — small footprint for integration into enclosures and projects\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eCommon Applications\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eDC motor speed control (drills, pumps, conveyor motors)\u003c\/li\u003e\n  \u003cli\u003ePC and industrial fan speed regulation\u003c\/li\u003e\n  \u003cli\u003eLED strip and bulb dimming (DC LED loads)\u003c\/li\u003e\n  \u003cli\u003eArduino and Raspberry Pi motor control projects\u003c\/li\u003e\n  \u003cli\u003e3D printer heated bed power control\u003c\/li\u003e\n  \u003cli\u003eSolar charge controller load management\u003c\/li\u003e\n  \u003cli\u003eElectric bicycle and scooter throttle control\u003c\/li\u003e\n  \u003cli\u003eAquarium pump and aerator speed control\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eFrequently Asked Questions\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Can I use this to control an AC motor?\u003c\/strong\u003e\u003cbr\u003eA: No. This controller is designed for DC loads only. Do not connect AC power or AC motors.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: What happens if I exceed the 3A current limit?\u003c\/strong\u003e\u003cbr\u003eA: Exceeding the rated current will cause the controller to overheat and may damage the MOSFET. For loads above 3A, add a heatsink or select a higher-rated controller.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Can I use this for LED dimming?\u003c\/strong\u003e\u003cbr\u003eA: Yes. This PWM controller works excellently for dimming DC LED strips and bulbs. Ensure your LED load does not exceed 3A \/ 80W total.\u003c\/p\u003e\n\n\u003ch3\u003ePackage Contents\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e1× PWM DC Motor Speed Controller (6V–28V 3A 80W)\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"1PCS","offer_id":46981888508139,"sku":"14:350852#1PCS","price":5.24,"currency_code":"USD","in_stock":true},{"title":"5PCS","offer_id":46981888540907,"sku":"14:10#5PCS","price":31.52,"currency_code":"USD","in_stock":true},{"title":"10PCS","offer_id":46981888573675,"sku":"14:1254#10PCS","price":52.24,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/pwm-dc-motor-speed-controller-regulator.webp?v=1761116011"},{"product_id":"pwm-mini-dc-motor-speed-controller-module-3v-35v-5a-90w-adjustable-regulator-led-dimmer","title":"PWM Mini DC Motor Speed Controller Module 3V-35V 5A 90W Adjustable Regulator \u0026 LED Dimmer","description":"\u003ch2\u003ePWM Mini DC Motor Speed Controller Module — 3V–35V, 5A, 90W, 10kHz\u003c\/h2\u003e\n\n\u003cp\u003eThe ZS-X4A is a compact, high-efficiency PWM DC motor speed controller module for brushed DC motors, LED strips, fans, and resistive loads. Operating from 3V to 35V with up to 5A continuous current (90W max), it covers the full range of 3.7V LiPo, 5V USB, 12V automotive, and 24V industrial supply voltages. The 10kHz switching frequency is above the audible range, eliminating motor whine — a key advantage over lower-frequency controllers.\u003c\/p\u003e\n\n\u003cp\u003eAvailable in 1, 5, or 10-piece packs.\u003c\/p\u003e\n\n\u003ch3\u003eSpecifications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eModel:\u003c\/strong\u003e ZS-X4A\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eInput Voltage:\u003c\/strong\u003e DC 3V – 35V\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMaximum Current:\u003c\/strong\u003e 5A continuous\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMaximum Power:\u003c\/strong\u003e 90W\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePWM Frequency:\u003c\/strong\u003e 10kHz (inaudible, no motor whine)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePWM Duty Cycle:\u003c\/strong\u003e 1% – 100% (fully adjustable via potentiometer)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuiescent Current:\u003c\/strong\u003e 15mA (standby)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eControl:\u003c\/strong\u003e Single potentiometer knob\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePCB Size:\u003c\/strong\u003e 24 × 30mm\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePackage:\u003c\/strong\u003e SMD components, compact form factor\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eKey Features\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003e10kHz PWM:\u003c\/strong\u003e Silent operation — no audible motor whine at any speed setting\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWide voltage range:\u003c\/strong\u003e Works with 3.7V LiPo, 5V, 6V, 12V, 24V, and up to 35V systems\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSimple single-knob control:\u003c\/strong\u003e Turn clockwise to increase speed\/brightness\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCompact 24×30mm footprint:\u003c\/strong\u003e Fits in tight enclosures and panel cutouts\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLow standby current:\u003c\/strong\u003e 15mA quiescent — suitable for battery-powered applications\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eWiring\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN+\u003c\/strong\u003e → Positive supply (3–35V DC)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN−\u003c\/strong\u003e → Negative supply (GND)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOUT+\u003c\/strong\u003e → Motor\/load positive\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOUT−\u003c\/strong\u003e → Motor\/load negative\u003c\/li\u003e\n\u003cli\u003eTurn potentiometer fully counterclockwise for 0% (off), fully clockwise for 100% (full speed)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTypical Applications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBrushed DC motor speed control (3V–35V)\u003c\/li\u003e\n\u003cli\u003eLED strip brightness dimming (12V\/24V)\u003c\/li\u003e\n\u003cli\u003ePC fan speed control\u003c\/li\u003e\n\u003cli\u003eWater pump flow rate regulation\u003c\/li\u003e\n\u003cli\u003eElectric drill and power tool speed governors\u003c\/li\u003e\n\u003cli\u003eBattery-powered robot drive speed control\u003c\/li\u003e\n\u003cli\u003eHeating element power control (resistive loads)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003ePackage Contents\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1, 5, or 10 × ZS-X4A PWM speed controller module (quantity as selected)\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"5PCS","offer_id":46981889065195,"sku":"14:173#5PCS","price":19.92,"currency_code":"USD","in_stock":true},{"title":"1PCS","offer_id":46981889097963,"sku":"14:350852#1PCS","price":4.0,"currency_code":"USD","in_stock":true},{"title":"10PCS","offer_id":46981889130731,"sku":"14:203008817#10PCS","price":39.64,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/pwm-mini-dc-motor-speed-controller-module.webp?v=1761115922"},{"product_id":"mini-dc-motor-pwm-speed-controller-module-4-5v-35v-5a-90w-adjustable-regulator-board","title":"Mini DC Motor PWM Speed Controller Module 4.5V-35V 5A 90W Adjustable Regulator Board","description":"\u003ch1\u003eSPECIFICATIONS\u003c\/h1\u003e\u003cp\u003e\u003cspan\u003eApplication\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eComputer\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eBrand Name\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eKeszoox\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eCondition\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNew\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eDissipation Power\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e90W(Max.)\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eHigh-concerned chemical\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNone\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOperating Temperature\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e--\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOrigin\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMainland China\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOutput Current\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e0-5A\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003ePWM duty cycle\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e1-100\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003ePWM frequency\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e20khz\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003ePackage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eSMD\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eQuantity\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e1\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eQuiescent Current\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e7uA (Standby)\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSupply Voltage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eDC 4.5V-35V\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eType\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eVoltage Regulator\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eis_customized\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eYes\u003c\/span\u003e\u003c\/p\u003e\u003cdiv class=\"detailmodule_html\"\u003e\u003cdiv class=\"detail-desc-decorate-richtext\"\u003e\n\u003cdiv class=\"detailmodule_dynamic\"\u003e\n \u003ckse:widget data-widget-type=\"relatedProduct\" id=\"1005000012632008\" title=\"\" type=\"relation\"\u003e\u003c\/kse:widget\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n \u003cspan style=\"font-size:20px\"\u003e\u003cspan style=\"font-size:20px;font-family:arial, helvetica, sans-serif\"\u003e\u003cstrong\u003eMini DC Motor Speed Controller Module PWM DC-DC 4.5V-35V 5A 90W 12V Adjustable Speed Regulator Control Governor Switch 24V Board\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003ch4 align=\"start\" style='font-family:\"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;letter-spacing:normal;text-align:start;white-space:normal;color:rgb(34, 34, 34);box-sizing:border-box'\u003e\n\u003cspan style=\"font-family:Arial, Helvetica, sans-serif\"\u003e\u003cspan style=\"font-size:18px\"\u003e\u003c\/span\u003e\u003c\/span\u003e \u003cstrong style='box-sizing: border-box; -webkit-tap-highlight-color: transparent; outline: 0px; color: rgb(34, 34, 34); font-family: \"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;'\u003e\u003cspan style=\"box-sizing: border-box; -webkit-tap-highlight-color: transparent; outline: 0px; margin: 0px; padding: 0px; max-width: 100%; word-break: break-word; font-family: Arial, Helvetica, sans-serif;\"\u003e\u003cspan style=\"box-sizing: border-box; -webkit-tap-highlight-color: transparent; outline: 0px; margin: 0px; padding: 0px; max-width: 100%; word-break: break-word; font-size: 20px;\"\u003e\u003cstrong style=\"box-sizing: border-box; -webkit-tap-highlight-color: transparent; outline: 0px; color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;\"\u003eWarm Tips:\u003c\/strong\u003e\u003cbr style=\"box-sizing: border-box; -webkit-tap-highlight-color: transparent; outline: 0px; color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;\"\u003e \u003cspan style=\"box-sizing: border-box; -webkit-tap-highlight-color: transparent; outline: 0px; margin: 0px; padding: 0px; max-width: 100%; word-break: break-word; color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;\"\u003eOur store support wholesale, the more quantity the more discount. \u003c\/span\u003e\u003cbr style=\"box-sizing: border-box; -webkit-tap-highlight-color: transparent; outline: 0px; color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;\"\u003e \u003cspan style=\"box-sizing: border-box; -webkit-tap-highlight-color: transparent; outline: 0px; margin: 0px; padding: 0px; max-width: 100%; word-break: break-word; color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;\"\u003eIf you want to bulk order, please feel free to contact seller for wholesale price, looking forward to receive your inquiry, thanks! ^_^\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\u003cbr\u003e \u003cbr\u003e \u003cspan style=\"font-size:20px;font-family:Arial, Helvetica, sans-serif\"\u003e\u003cspan style=\"font-size:20px\"\u003e\u003cstrong\u003eSpecifications:\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan style=\"font-size:20px\"\u003e\u003cspan style=\"font-size:20px;font-family:Arial, Helvetica, sans-serif\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cbr\u003e \u003cspan style=\"font-size:18px;font-family:Arial, Helvetica, sans-serif\"\u003e\u003cspan style=\"font-size:18px\"\u003eOperating Voltage: DC 4.5V-35V\u003cbr\u003e Output Current: 0-5A\u003cbr\u003e Control Power: 90W(Max.)\u003cbr\u003e Quiescent Current: 7uA (Standby)\u003cbr\u003e PWM Duty Cycle: 1% -100%\u003cbr\u003e PWM Frequency: 20khz\u003cbr\u003e Size: 30mm*26mm*14mm\u003c\/span\u003e\u003c\/span\u003e\u003cspan style=\"font-size:18px;font-family:Arial, Helvetica, sans-serif\"\u003e\u003cspan style=\"font-size:18px\"\u003e\u003cbr\u003e \u003cbr\u003e - 5A Mini DC Motor PWM Speed Controller\u003cbr\u003e - By screwing the potentiometer, you can turn off power supply output. High voltage and high current resettable fuse, overcurrent automatic disconnection, power off for cooling for a few seconds fuses automatic recovery.\u003cbr\u003e - Default disconnection of short circuit point. Please note: the operating voltage can be switched to 4.5V-35V by bridging the connectors marked '4.5V-35V' on the PCB.\u003c\/span\u003e\u003c\/span\u003e\n\u003c\/h4\u003e\n\u003cp style=\"margin:0;display: block;width: 100%;\"\u003e\u003cimg referrerpolicy=\"no-referrer\" src=\"https:\/\/ae01.alicdn.com\/kf\/S7cad1c68dcbe4077bc4c9ddfa74ac492H.jpg\"\u003e\u003c\/p\u003e\n\u003cp align=\"start\" style='font-family:\"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;letter-spacing:normal;text-align:start;white-space:normal;color:rgb(34, 34, 34);box-sizing:border-box'\u003e\u003cspan style=\"font-family:Arial, Helvetica, sans-serif\"\u003e\u003c\/span\u003e\u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S48fe4110d49c40df8d231080e5c0c311z.jpg\"\u003e\u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S43effbb227ed4d46a6a8c1a5034de7f7B.jpg\"\u003e\u003cbr\u003e \u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sc32e384e3bc446f59b0e30e472f939cez.jpg\"\u003e\u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S58968c229bab4d8f877ffad911d79f38Q.jpg\"\u003e\u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sd01fac5412b847ce820991546f6ddd73B.jpg\"\u003e\u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sec5e508ab7aa4009825671188eb3fbfcG.jpg\"\u003e\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/div\u003e\r\n","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":46981889229035,"sku":"\u003cnone\u003e","price":5.76,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/mini-dc-motor-pwm-speed-controller-module.webp?v=1761115882"},{"product_id":"a4988-drv8825-stepper-motor-driver-heatsink-stepstick-3d-printer-arduino","title":"A4988 \/ DRV8825 Stepper Motor Driver Module with Heat Sink — StepStick for 3D Printers \u0026 Arduino","description":"\u003ch2\u003eA4988 \/ DRV8825 Stepper Motor Driver Module with Heat Sink — StepStick Carrier\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eA4988 and DRV8825 stepper motor driver modules\u003c\/strong\u003e are the industry-standard StepStick-format drivers used in RAMPS 1.4\/1.6 boards, 3D printer control boards (MKS, SKR, Creality), and Arduino CNC shields. Each module includes a pre-attached aluminum heat sink for thermal management at sustained current levels. Select the A4988 for standard 3D printer applications or the DRV8825 for higher current motors and finer microstepping.\u003c\/p\u003e\n\n\u003ch2\u003eKey Specifications\u003c\/h2\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eA4988\u003c\/th\u003e\n\u003cth\u003eDRV8825\u003c\/th\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eMax Output Current\u003c\/td\u003e\n\u003ctd\u003e1A continuous (2A peak)\u003c\/td\u003e\n\u003ctd\u003e1.5A continuous (2.2A peak)\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eMotor Supply Voltage\u003c\/td\u003e\n\u003ctd\u003e8V – 35V\u003c\/td\u003e\n\u003ctd\u003e8.2V – 45V\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eMicrostepping\u003c\/td\u003e\n\u003ctd\u003eFull, 1\/2, 1\/4, 1\/8, 1\/16\u003c\/td\u003e\n\u003ctd\u003eFull, 1\/2, 1\/4, 1\/8, 1\/16, 1\/32\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eLogic Voltage\u003c\/td\u003e\n\u003ctd\u003e3.3V \/ 5V\u003c\/td\u003e\n\u003ctd\u003e3.3V \/ 5V\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eThermal Protection\u003c\/td\u003e\n\u003ctd\u003eYes\u003c\/td\u003e\n\u003ctd\u003eYes\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eCurrent Adjust\u003c\/td\u003e\n\u003ctd\u003eOnboard potentiometer (Vref)\u003c\/td\u003e\n\u003ctd\u003eOnboard potentiometer (Vref)\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eHeat Sink\u003c\/td\u003e\n\u003ctd\u003eIncluded\u003c\/td\u003e\n\u003ctd\u003eIncluded\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eForm Factor\u003c\/td\u003e\n\u003ctd\u003eStepStick (Pololu-compatible)\u003c\/td\u003e\n\u003ctd\u003eStepStick (Pololu-compatible)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch2\u003eA4988 vs DRV8825 — Which to Choose?\u003c\/h2\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eA4988\u003c\/strong\u003e — Best for standard NEMA 17 motors in 3D printers (Ender 3, CR-10, Prusa i3). Proven, widely supported, easy to tune.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eDRV8825\u003c\/strong\u003e — Better for higher-current motors, quieter operation at 1\/32 microstepping, and higher voltage systems. Requires a 100μF capacitor on VMOT to prevent voltage spikes.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eTypical Applications\u003c\/h2\u003e\n\u003cul\u003e\n  \u003cli\u003e3D printer axis motors (X, Y, Z, extruder) on RAMPS 1.4\/1.6, MKS Gen, SKR boards\u003c\/li\u003e\n  \u003cli\u003eArduino CNC shield for laser engravers and CNC routers\u003c\/li\u003e\n  \u003cli\u003eTelescope mount and camera slider motor control\u003c\/li\u003e\n  \u003cli\u003eRobotic arm and pan-tilt mechanism control\u003c\/li\u003e\n  \u003cli\u003eAutomated curtain, blind, and valve actuator projects\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eFrequently Asked Questions\u003c\/h2\u003e\n\u003ch3\u003eQ: How do I set the current limit?\u003c\/h3\u003e\n\u003cp\u003eMeasure the Vref voltage at the potentiometer wiper with a multimeter. For A4988: \u003cstrong\u003eImax = Vref \/ 0.8\u003c\/strong\u003e. For DRV8825: \u003cstrong\u003eImax = Vref \/ 0.5\u003c\/strong\u003e. Set Vref to achieve your desired current limit. Start low and increase gradually while monitoring motor temperature.\u003c\/p\u003e\n\n\u003ch3\u003eQ: Do I need to add a capacitor for the DRV8825?\u003c\/h3\u003e\n\u003cp\u003eYes. Texas Instruments recommends a \u003cstrong\u003e100μF electrolytic capacitor\u003c\/strong\u003e across the VMOT and GND pins to suppress voltage spikes from motor back-EMF. Without it, the DRV8825 may be damaged by transient overvoltage.\u003c\/p\u003e\n\n\u003ch2\u003ePackage Contents\u003c\/h2\u003e\n\u003cul\u003e\n  \u003cli\u003e1× A4988 or DRV8825 Stepper Motor Driver Module (select variant)\u003c\/li\u003e\n  \u003cli\u003e1× Aluminum heat sink (pre-attached)\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"A4988 Red","offer_id":46981893488875,"sku":"14:10#A4988 Red","price":5.32,"currency_code":"USD","in_stock":true},{"title":"A4988 Green","offer_id":46981893521643,"sku":"14:200004870#A4988 Green","price":5.32,"currency_code":"USD","in_stock":true},{"title":"DRV8825","offer_id":46981893554411,"sku":"14:202693815#DRV8825","price":6.04,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/a4988-drv8825-stepper-motor-driver-heat-sink-arduino.webp?v=1761113384"},{"product_id":"400w-30a-pwm-dc-motor-speed-controller-module-5v-36v-dual-high-power-mosfet-drive","title":"400W 30A PWM DC Motor Speed Controller Module 5V-36V Dual High-Power MOSFET Drive","description":"\u003ch1\u003eSPECIFICATIONS\u003c\/h1\u003e\u003cp\u003e\u003cspan\u003eApplication\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eComputer\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eBrand Name\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eKeszoox\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eCondition\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNew\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eDissipation Power\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e15A 400W\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eFunctions\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eElectronic Module\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eHigh-concerned chemical\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNone\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOperating Temperature\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e-40-+85\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOrigin\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMainland China\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003ePackage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eDIY KIT\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eQuantity\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e1\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eRange of application\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eSwitch And Sensor For Arduino STM\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSupply Voltage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eDC 5V--36V\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eType\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eVoltage Regulator\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eis_customized\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eYes\u003c\/span\u003e\u003c\/p\u003e\u003cdiv class=\"detailmodule_html\"\u003e\u003cdiv class=\"detail-desc-decorate-richtext\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\u003cspan style=\"font-family:Arial, Helvetica, sans-serif\"\u003e\u003cspan style=\"font-size:18px\"\u003e\u003cstrong\u003e400W Max 30A PWM Regulator Adjustment Motor DC5V-36V 15A MOSFET Trigger Switch Drive Dual High-Power Speed Control Board Module\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/div\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"color:red\"\u003e\u003cbr\u003e\n\u003cspan style=\"font-size:16px;\"\u003eModule Highlights:\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"font-size:16px;\"\u003e\u003cspan style=\"background-color:yellow;color:blue\"\u003e1. The use of imported dual-MOS parallel active output, lower resistance, more current, strong power. At room temperature to provide current of 15A, 400W power;\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"font-size:16px;\"\u003e\u003cspan style=\"background-color:yellow;color:blue\"\u003e2. Wide voltage input, support PWM;\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"font-size:16px;\"\u003e\u003cspan style=\"background-color:yellow;color:blue\"\u003e3. Easy to control high power devices.\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cdiv\u003e\u003cspan style=\"font-size:16px;\"\u003e\u003c\/span\u003e\u003c\/div\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"font-size:16px;\"\u003e\u003cspan style=\"color:red\"\u003eProduct specifications and applications:\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"font-size:16px;\"\u003e1. Working voltage: DC 5V - 36V;\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"font-size:16px;\"\u003e2. The trigger source: Digital high-low (DC3.3V - 20V), can be connected microcontroller IO port, PLC interfaces, DC power, you can access the PWM signal, the signal can be supported frequency range 0--20KHZ.\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"font-size:16px;\"\u003e3. Output capacity: DC 5V - 36V, at room temperature, continuous current 15A, power 400W!\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"font-size:16px;\"\u003e4. Application: High Power equipment, motors, light bulbs, LED lights, DC motors, micro-pumps, solenoid valve; motor speed control, lamp brightness.\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"font-size:16px;\"\u003e5. Service life: unlimited-off;\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"font-size:16px;\"\u003e6. Working temperature: -40-85 ℃;\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cp align=\"start\" style='font-family:\"TT Norms Pro\", \"Open Sans\", Roboto, Arial, Helvetica, sans-serif, SimSun;font-size:14px;font-weight:400;letter-spacing:normal;line-height:inherit;text-align:start;white-space:normal;color:rgb(34, 34, 34);background-color:rgb(255, 255, 255);margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;padding:0px;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;box-sizing:border-box'\u003e\u003cspan style=\"font-size:16px;\"\u003e7. Size: 34 * 17 * 12mm.\u003cbr\u003e\n8. Quantity: 1 PCS \/ 3 PCS\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cp style=\"margin:0px;margin-bottom:0px;margin-top:0px;margin-left:0px;margin-right:0px;display:block;width:100%\"\u003e\u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S2502598ada184027a900023d24d95c75J.jpg\"\u003e\u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S5a2cc4bb39cf4ca596dc34ce06238702T.jpg\"\u003e\u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S768ddeb7d24740c984cd03f4e71a1330o.jpg\"\u003e\u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S46fefaf9d2ff4115b9ba6b7a7a751750T.jpg\"\u003e\u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sa7a8e1c0dfbf4b8aa2fc1430fd429447A.jpg\"\u003e\u003cimg referrerpolicy=\"no-referrer\" slate-data-type=\"image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sdd5833e0486b4946b8b4d2089a973c43I.jpg\"\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cp\u003e \u003c\/p\u003e\n\u003c\/div\u003e\u003c\/div\u003e\r\n","brand":"Keszoox","offers":[{"title":"3 PCS","offer_id":46981893587179,"sku":"3:1981284404#3 PCS","price":6.32,"currency_code":"USD","in_stock":true},{"title":"1 PCS","offer_id":46981893619947,"sku":"3:201010228#1 PCS","price":3.6,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/400w-30a-pwm-dc-motor-speed-controller-mosfet.webp?v=1761113302"},{"product_id":"l298n-dual-h-bridge-motor-driver-module-for-dc-stepper-motors-smart-robot-car-and-arduino-projects","title":"L298N Dual H-Bridge Motor Driver Module for DC Stepper Motors, Smart Robot Car and Arduino Projects","description":"\u003ch2\u003eL298N Dual H-Bridge Motor Driver Module — DC \u0026amp; Stepper Motors, Arduino \u0026amp; Robot Car\u003c\/h2\u003e\n\n\u003cp\u003eA versatile dual H-bridge motor driver module based on the ST L298N IC, capable of driving two DC motors independently (forward\/reverse\/speed control) or one bipolar stepper motor (full-step, half-step, or microstepping). Supports motor supply voltages from 5V to 35V DC with up to 2A continuous current per channel (4A peak), making it suitable for small to medium-sized DC motors and NEMA 17 stepper motors in Arduino robot cars, CNC machines, and automation projects.\u003c\/p\u003e\n\n\u003ch3\u003eTechnical Specifications\u003c\/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eDriver IC\u003c\/td\u003e\n\u003ctd\u003eST L298N (dual full H-bridge)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMotor Supply Voltage (VM)\u003c\/td\u003e\n\u003ctd\u003e5V – 35V DC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLogic Supply Voltage (VCC)\u003c\/td\u003e\n\u003ctd\u003e5V (onboard 5V regulator from VM, if VM \u0026gt; 7V)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eContinuous Output Current\u003c\/td\u003e\n\u003ctd\u003e2A per channel\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePeak Output Current\u003c\/td\u003e\n\u003ctd\u003e3A per channel (short duration)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMax Power Dissipation\u003c\/td\u003e\n\u003ctd\u003e25W (with heatsink)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePWM Frequency\u003c\/td\u003e\n\u003ctd\u003eUp to 40kHz\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOperating Temperature\u003c\/td\u003e\n\u003ctd\u003e−20°C to +135°C\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLogic Input Voltage\u003c\/td\u003e\n\u003ctd\u003e3.3V \/ 5V compatible\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eProtection\u003c\/td\u003e\n\u003ctd\u003eThermal shutdown, overcurrent protection (L298N IC)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOnboard 5V Regulator\u003c\/td\u003e\n\u003ctd\u003eYes (78M05, active when VM \u0026gt; 7V)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDimensions\u003c\/td\u003e\n\u003ctd\u003e~43 × 43 × 27mm (with heatsink)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\u003ch3\u003ePin Reference\u003c\/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003ePin \/ Terminal\u003c\/th\u003e\n\u003cth\u003eFunction\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eVM (12V)\u003c\/td\u003e\n\u003ctd\u003eMotor power supply (5–35V DC)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eGND\u003c\/td\u003e\n\u003ctd\u003eCommon ground\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e5V (output)\u003c\/td\u003e\n\u003ctd\u003e5V logic output from onboard regulator (when VM \u0026gt; 7V)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eIN1, IN2\u003c\/td\u003e\n\u003ctd\u003eDirection control for Motor A (HIGH\/LOW logic)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eIN3, IN4\u003c\/td\u003e\n\u003ctd\u003eDirection control for Motor B\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eENA\u003c\/td\u003e\n\u003ctd\u003ePWM speed control for Motor A (remove jumper for PWM)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eENB\u003c\/td\u003e\n\u003ctd\u003ePWM speed control for Motor B\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOUT1, OUT2\u003c\/td\u003e\n\u003ctd\u003eMotor A output terminals\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOUT3, OUT4\u003c\/td\u003e\n\u003ctd\u003eMotor B output terminals\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\u003ch3\u003eTypical Applications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eArduino Robot Car:\u003c\/strong\u003e Drive two DC gear motors for differential steering in 2WD and 4WD robot car kits. Control speed via PWM on ENA\/ENB and direction via IN1–IN4.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBipolar Stepper Motor Control:\u003c\/strong\u003e Drive NEMA 17 (1.7A) and NEMA 23 (2A) stepper motors for CNC router axes, 3D printer extruders, and camera sliders\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSmart Vehicle Projects:\u003c\/strong\u003e Motor control for line-following robots, maze-solving robots, and obstacle-avoidance vehicles with ultrasonic sensors\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePeltier (TEC) Module Control:\u003c\/strong\u003e H-bridge control of Peltier thermoelectric cooler modules for temperature regulation in DIY cooling systems\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eConveyor \u0026amp; Actuator Control:\u003c\/strong\u003e DC motor control for small conveyor belts, linear actuators, and automated dispensing mechanisms\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eArduino Wiring Example (2 DC Motors)\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConnect VM to 9–12V DC power supply; GND to Arduino GND\u003c\/li\u003e\n\u003cli\u003eConnect 5V output to Arduino 5V (if using onboard regulator)\u003c\/li\u003e\n\u003cli\u003eIN1 → Arduino D8 | IN2 → D9 | IN3 → D10 | IN4 → D11\u003c\/li\u003e\n\u003cli\u003eENA → Arduino D5 (PWM) | ENB → D6 (PWM) — remove ENA\/ENB jumpers first\u003c\/li\u003e\n\u003cli\u003eUse \u003ccode\u003eanalogWrite(ENA, 150)\u003c\/code\u003e for 60% speed; \u003ccode\u003edigitalWrite(IN1, HIGH); digitalWrite(IN2, LOW)\u003c\/code\u003e for forward\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eFAQ\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Can the L298N module drive a NEMA 17 stepper motor?\u003c\/strong\u003e\u003cbr\u003eA: Yes. Wire the stepper coils to OUT1\/OUT2 (Coil A) and OUT3\/OUT4 (Coil B). Use the Arduino Stepper library or AccelStepper library with IN1–IN4 for step\/direction control. Ensure the stepper rated current is ≤2A per coil.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Why does the L298N get hot during operation?\u003c\/strong\u003e\u003cbr\u003eA: The L298N has a relatively high voltage drop (~2V per H-bridge), causing significant power dissipation at high currents. Ensure the heatsink is properly attached and consider adding a small fan for continuous high-current operation. For efficiency-critical applications, consider a DRV8833 or TB6612FNG driver instead.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Can I use 3.3V logic (ESP32, STM32) with this module?\u003c\/strong\u003e\u003cbr\u003eA: Yes. The L298N logic inputs are compatible with 3.3V logic levels. Connect ESP32 or STM32 GPIO pins directly to IN1–IN4 and ENA\/ENB without a level shifter.\u003c\/p\u003e\n\n\u003ch3\u003ePackage Contents\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1 × L298N dual H-bridge motor driver module (with heatsink pre-installed)\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":46981893849323,"sku":"\u003cnone\u003e","price":12.6,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/l298n-dual-h-bridge-motor-driver-module-arduino-robot.webp?v=1761113255"},{"product_id":"5882-50-worm-gear-dc-self-locking-motor-large-torque-low-speed-12v-24v","title":"5882-50 Worm Gear DC Self-Locking Motor Large Torque Low Speed 12V-24V","description":"\u003ch1\u003eSPECIFICATIONS\u003c\/h1\u003e\u003cp\u003e\u003cspan\u003eBrand Name\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eKeszoox\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eChoice\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eyes\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eCondition\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNew\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eDissipation Power\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eHigh-concerned chemical\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNone\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOperating Temperature\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOrigin\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMainland China\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSupply Voltage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eType\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eModule\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eis_customized\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eYes\u003c\/span\u003e\u003c\/p\u003e\u003cdiv class=\"detailmodule_image\"\u003e\n\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Sc8598e1537f347f0bae7b4e502a1af1fG.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/S3ce08cd72ee74a69aa52f1a197f2ce65R.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Sfc8933bd5f6f43c8b846547be051dd8fx.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Se76082dc1cde41038d98170d10094f64T.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/S20303a2ae45c4a61bc7993828005c9704.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Sb6ef9bac30d04bd2a31d4ce9454e5c45z.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Sf06bd8c723f740538454886c6ddf92c4e.jpg\" class=\"detail-desc-decorate-image\"\u003e\n\u003c\/div\u003e\r\n","brand":"Keszoox","offers":[{"title":"12v motor","offer_id":46985493938411,"sku":"14:94#12v motor","price":324.32,"currency_code":"USD","in_stock":true},{"title":"24v motor","offer_id":46985493971179,"sku":"14:173#24v motor","price":324.32,"currency_code":"USD","in_stock":true},{"title":"12 with power supply","offer_id":46985494003947,"sku":"14:366#12 with power supply","price":353.52,"currency_code":"USD","in_stock":true},{"title":"24 with power supply","offer_id":46985494036715,"sku":"14:496#24 with power supply","price":353.52,"currency_code":"USD","in_stock":true},{"title":"12v motor bracket","offer_id":46985494069483,"sku":"14:175#12v motor bracket","price":330.76,"currency_code":"USD","in_stock":true},{"title":"24v motor bracket","offer_id":46985494102251,"sku":"14:193#24v motor bracket","price":335.24,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/5882-50-worm-gear-dc-self-locking-motor.webp?v=1761288001"},{"product_id":"omnidirectional-mecanum-wheels-for-tt-motor-robots-with-6mm-bushings","title":"Omnidirectional Mecanum Wheels for TT Motor Robots with 6mm Bushings","description":"\u003ch1\u003eSPECIFICATIONS\u003c\/h1\u003e\u003cp\u003e\u003cspan\u003eBrand Name\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eKeszoox\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eChoice\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eyes\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eCondition\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNew\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eDissipation Power\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eHigh-concerned chemical\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNone\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOperating Temperature\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOrigin\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMainland China\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSpecifications and models\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMcNamee Wheel Omni Wheel 48mm 60mm 80mm 97mm\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSupply Voltage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eType\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eVoltage Regulator\u003c\/span\u003e\u003c\/p\u003e\u003cdiv class=\"detailmodule_html\"\u003e\u003cdiv class=\"detail-desc-decorate-richtext\"\u003e\n\u003cdiv id=\"product-description\" data-spm=\"1000023\" class=\"description--product-description--Mjtql28\" data-pl=\"product-description\"\u003e\n \u003cdiv class=\"description--origin-part--rWy05pE\"\u003e\n  \u003cdiv class=\"detailmodule_html\"\u003e\n   \u003cdiv class=\"detail-desc-decorate-richtext\"\u003e\n    \u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n    \u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n    \u003cp\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Sf1e7993684c2485fb8f3589e07a6fb6de.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/Sbfe3d0c0de7c402b998fd23011f4effcl.jpg\" slate-data-type=\"image\"\u003e\u003c\/p\u003e\n    \u003cp\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/S4a91a20b17494302b67697c886865f5dL.jpg\" slate-data-type=\"image\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/S888013a28c3c40d3a8e8e4d5f3a465bbd.jpg\"\u003e\u003c\/p\u003e\n    \u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n    \u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n    \u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Sceeb74cd3231464484b14342d0e9f227W.jpg\" style=\"width:800px;\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\92f1dc4cb19845d5baa217f6bd34574c\\dImgNew\\DImgNew4_8obytnzz.jpg\"\u003e\n   \u003c\/div\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"detailmodule_image\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S0e21b31a354d4289bbadaf8a3b46d5b4o.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\92f1dc4cb19845d5baa217f6bd34574c\\dImgNew\\DImgNew5_8obytnzz.jpg\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S4773dcc652a4420b89fc2d6ee201354eA.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\92f1dc4cb19845d5baa217f6bd34574c\\dImgNew\\DImgNew6_8obytnzz.jpg\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\r\n","brand":"Keszoox","offers":[{"title":"4pcs 48mm","offer_id":46985501769963,"sku":"14:173#4pcs 48mm","price":62.2,"currency_code":"USD","in_stock":true},{"title":"4pcs 60mm","offer_id":46985501802731,"sku":"14:175#4pcs 60mm","price":70.68,"currency_code":"USD","in_stock":true},{"title":"4pcs 80mm","offer_id":46985501835499,"sku":"14:193#4pcs 80mm","price":89.08,"currency_code":"USD","in_stock":true},{"title":"4pcs 97mm","offer_id":46985501868267,"sku":"14:366#4pcs 97mm","price":109.16,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/omnidirectional-mecanum-wheels-tt-motor-robots.webp?v=1761283670"},{"product_id":"6514-tt-motor-with-free-wheel-for-smart-robot-car-and-narrow-wheel-line-following","title":"6514 TT Motor with Free Wheel for Smart Robot Car and Narrow Wheel Line-Following","description":"\u003ch1\u003eSPECIFICATIONS\u003c\/h1\u003e\u003cp\u003e\u003cspan\u003eApplication\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003estandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eBrand Name\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eKeszoox\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eChoice\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eyes\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eCondition\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNew\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eDissipation Power\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003estandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eHigh-concerned chemical\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNone\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOperating Temperature\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003estandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOrigin\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMainland China\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSupply Voltage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003estandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eType\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eModule\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eis_customized\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eYes\u003c\/span\u003e\u003c\/p\u003e\u003cdiv class=\"detailmodule_html\"\u003e\u003cdiv class=\"detail-desc-decorate-richtext\"\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cdiv\u003e\u003cp\u003e\u003cimg style=\"width:1360px\" width=\"1360px\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sfedea9ea99c34f8ea9d0948f00da4e57N.jpg\" slate-data-type=\"image\"\u003e\u003c\/p\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cp\u003e\u003cimg style=\"width:800px\" width=\"800px\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sf1bceccf542e48d1bd733d2cf9bb3c93h.jpg\" slate-data-type=\"image\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:800px\" width=\"800px\" src=\"https:\/\/ae01.alicdn.com\/kf\/S6b638683e3814f389cd0eff90bfbd824V.jpg\" slate-data-type=\"image\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:800px\" width=\"800px\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sb6bad761321d4cb4ad0389fd80267473z.jpg\" slate-data-type=\"image\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:800px\" width=\"800px\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sfbd3ccf65bab493eb505901b18061eb9L.jpg\" slate-data-type=\"image\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:800px\" width=\"800px\" src=\"https:\/\/ae01.alicdn.com\/kf\/S9c60ce1f513343c19bb4de021bf7c2abn.jpg\" slate-data-type=\"image\"\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/div\u003e\u003cbr\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":46985505636587,"sku":"\u003cnone\u003e","price":24.88,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/6514-tt-motor-free-wheel-smart-robot-car.webp?v=1761279518"},{"product_id":"bts7960-43a-h-bridge-motor-driver-module-dc-motor-robot-arduino","title":"BTS7960 High-Power Motor Driver Module — 43A H-Bridge for DC Motors, Robots \u0026 Arduino","description":"\u003ch2\u003eBTS7960 High-Power Motor Driver Module — 43A H-Bridge\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eBTS7960 motor driver module\u003c\/strong\u003e is a high-current H-bridge driver built around Infineon’s BTS7960 half-bridge IC. With a \u003cstrong\u003e43A peak current rating\u003c\/strong\u003e and built-in overcurrent, overtemperature, and undervoltage protection, it drives large DC motors, high-torque actuators, and electric vehicle motors that exceed the capability of standard L298N or L293D drivers. Compatible with Arduino, Raspberry Pi, and any PWM-capable microcontroller for smooth bidirectional speed control.\u003c\/p\u003e\n\n\u003ch2\u003eKey Specifications\u003c\/h2\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eDriver IC\u003c\/td\u003e\n\u003ctd\u003e2× Infineon BTS7960 (half-bridge, full H-bridge configuration)\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eMotor Supply Voltage\u003c\/td\u003e\n\u003ctd\u003e5V – 27V DC\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003ePeak Output Current\u003c\/td\u003e\n\u003ctd\u003e43A\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eContinuous Current\u003c\/td\u003e\n\u003ctd\u003e~25–30A (with adequate heatsinking)\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003ePWM Frequency\u003c\/td\u003e\n\u003ctd\u003eUp to 25kHz\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eLogic Voltage\u003c\/td\u003e\n\u003ctd\u003e3.3V \/ 5V compatible\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eControl Signals\u003c\/td\u003e\n\u003ctd\u003eRPWM, LPWM, R_EN, L_EN (4-pin control interface)\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eProtection\u003c\/td\u003e\n\u003ctd\u003eOvercurrent, overtemperature, undervoltage lockout\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eOnboard Heatsink\u003c\/td\u003e\n\u003ctd\u003eYes (aluminum)\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eOrigin\u003c\/td\u003e\n\u003ctd\u003eCN\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch2\u003eBTS7960 vs L298N — Why Upgrade?\u003c\/h2\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n\u003cth\u003eFeature\u003c\/th\u003e\n\u003cth\u003eBTS7960 Module\u003c\/th\u003e\n\u003cth\u003eL298N Module\u003c\/th\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003ePeak Current\u003c\/td\u003e\n\u003ctd\u003e✅ 43A\u003c\/td\u003e\n\u003ctd\u003e❌ 2A\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eVoltage Drop\u003c\/td\u003e\n\u003ctd\u003e✅ Low (\u0026lt;0.5V)\u003c\/td\u003e\n\u003ctd\u003e❌ High (~2V)\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eEfficiency\u003c\/td\u003e\n\u003ctd\u003e✅ High (MOSFET-based)\u003c\/td\u003e\n\u003ctd\u003e❌ Low (BJT-based)\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eProtection\u003c\/td\u003e\n\u003ctd\u003e✅ OCP + OTP + UVLO\u003c\/td\u003e\n\u003ctd\u003e❌ None\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003ePWM Frequency\u003c\/td\u003e\n\u003ctd\u003e✅ Up to 25kHz\u003c\/td\u003e\n\u003ctd\u003e❌ Up to ~20kHz\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eBest For\u003c\/td\u003e\n\u003ctd\u003eHigh-power motors, robots, e-bikes\u003c\/td\u003e\n\u003ctd\u003eSmall hobby motors\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch2\u003eTypical Applications\u003c\/h2\u003e\n\u003cul\u003e\n  \u003cli\u003eHigh-torque DC motor control for robots and autonomous vehicles\u003c\/li\u003e\n  \u003cli\u003eElectric bicycle (e-bike) and scooter motor driver\u003c\/li\u003e\n  \u003cli\u003eIndustrial conveyor and actuator motor control\u003c\/li\u003e\n  \u003cli\u003eArduino and Raspberry Pi high-power motor projects\u003c\/li\u003e\n  \u003cli\u003eSmart car chassis motor driver (replacement for L298N)\u003c\/li\u003e\n  \u003cli\u003eWinch, crane, and linear actuator control\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eFrequently Asked Questions\u003c\/h2\u003e\n\u003ch3\u003eQ: How do I control direction and speed with Arduino?\u003c\/h3\u003e\n\u003cp\u003eConnect RPWM to a PWM pin for forward speed, LPWM to a PWM pin for reverse speed, and R_EN\/L_EN to digital HIGH to enable the driver. For forward at 50% speed: \u003ccode\u003eanalogWrite(RPWM, 128); analogWrite(LPWM, 0);\u003c\/code\u003e. For reverse: \u003ccode\u003eanalogWrite(RPWM, 0); analogWrite(LPWM, 128);\u003c\/code\u003e.\u003c\/p\u003e\n\n\u003ch3\u003eQ: Does the module need an external heatsink?\u003c\/h3\u003e\n\u003cp\u003eThe onboard aluminum heatsink handles moderate loads. For sustained operation above 20A, add a fan or attach an additional heatsink to the BTS7960 ICs. Monitor the module temperature during initial testing at your target current level.\u003c\/p\u003e\n\n\u003ch2\u003ePackage Contents\u003c\/h2\u003e\n\u003cul\u003e\n  \u003cli\u003e1× BTS7960 43A H-Bridge Motor Driver Module\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"BTS7960","offer_id":46985521529067,"sku":"14:351074#BTS7960","price":19.64,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/bts7960-smart-car-motor-driver-43a.webp?v=1761277401"},{"product_id":"l298n-dual-h-bridge-motor-driver-board-module-for-dc-and-stepper-motors-robot-car-control","title":"L298N Dual H-Bridge Motor Driver Board Module for DC and Stepper Motors Robot Car Control","description":"\u003ch1\u003eSPECIFICATIONS\u003c\/h1\u003e\u003cp\u003e\u003cspan\u003eBrand Name\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eKeszoox\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eChoice\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eyes\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eCondition\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNew\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eDissipation Power\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eHigh-concerned chemical\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNone\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOperating Temperature\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOrigin\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMainland China\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSupply Voltage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eType\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eModule\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eis_customized\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eYes\u003c\/span\u003e\u003c\/p\u003e\u003cdiv class=\"detailmodule_html\"\u003e\u003cdiv class=\"detail-desc-decorate-richtext\"\u003e\n\u003cdiv class=\"detailmodule_text\"\u003e\n \u003cp class=\"detail-desc-decorate-title\" style=\"color:#000000;text-align:left;font-size:20px;font-weight:normal;margin-bottom:12px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e\u003cbr\u003e\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003eNote:\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e\u003cbr\u003e\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e1. When your driving voltage (marked as 12V input in the above figure, the actual acceptable input range is 7-12V) is 7-12V, you can enable the on-board 5V logic power supply. When using the on-board 5V power supply, 5V in the interface\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e\u003cbr\u003e\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003eThe power supply does not need to input voltage, but 5V voltage can be drawn for external use. (This is a regular application!)\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e\u003cbr\u003e\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e2. When the driving voltage is higher than 12V and less than or equal to 24V (the chip manual proposes to support 35V, but according to\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e\u003cbr\u003e\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003eIt is already remarkable to test the conservative application voltage support to 24V in general 298!) When, for example, to drive a rated voltage\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e\u003cbr\u003e\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e18V motor. The jumper cap for the onboard 5V output enable must first be removed. Then connect 5V externally to the 5V output port\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e\u003cbr\u003e\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e5V enable is a control signal with a level of 5V. When this signal input is valid and the power supply in the motor drive module is normal, the motor drive module outputs current. Otherwise, even if the power supply is normal, there is no current on the motor.\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003e\u003cbr\u003e\u003c\/p\u003e\n \u003cp class=\"detail-desc-decorate-content\" style=\"color:#000000;text-align:None;font-size:12px;font-weight:normal;margin-bottom:2px;white-space:pre-wrap;word-wrap:break-word;text-overflow:ellipsis;\"\u003eThe voltage supplies the L298N internal logic circuit. (This is an unconventional application of high-voltage drive!)\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"detailmodule_image\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S7c12af68671947e19b5f50c0cfd5f6ef9.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\42ae444b7a6f4ca2969733251ad8ad0d\\dImgNew\\DImgNew2_gqirc12n.jpg\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S1d281d9d549242f0ac6c436f0b1d0ab6E.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\42ae444b7a6f4ca2969733251ad8ad0d\\dImgNew\\DImgNew3_gqirc12n.jpg\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S451c1ebfc9604436af53aca77155df07I.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\42ae444b7a6f4ca2969733251ad8ad0d\\dImgNew\\DImgNew4_gqirc12n.jpg\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S0e303c2fb36643aca288618fff68ec28v.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\42ae444b7a6f4ca2969733251ad8ad0d\\dImgNew\\DImgNew5_gqirc12n.jpg\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sbb6d35d9c77d4befae0d699f8dafb1b6j.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\42ae444b7a6f4ca2969733251ad8ad0d\\dImgNew\\DImgNew6_gqirc12n.jpg\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sfa5052da010a431dabe2b5e31f439457O.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\42ae444b7a6f4ca2969733251ad8ad0d\\dImgNew\\DImgNew7_gqirc12n.jpg\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sf53cc8806cf346dd9660d2a37884e0e70.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\42ae444b7a6f4ca2969733251ad8ad0d\\dImgNew\\DImgNew8_wfo7l18o.jpg\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sf36ad914b00e4ce4bc3f31502d256711k.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\42ae444b7a6f4ca2969733251ad8ad0d\\dImgNew\\DImgNew9_wfo7l18o.jpg\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"detailmodule_image\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S0e21b31a354d4289bbadaf8a3b46d5b4o.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\42ae444b7a6f4ca2969733251ad8ad0d\\dImgNew\\DImgNew10_nfpqcpnd.jpg\"\u003e\n \u003cimg class=\"detail-desc-decorate-image\" src=\"https:\/\/ae01.alicdn.com\/kf\/S4773dcc652a4420b89fc2d6ee201354eA.jpg\" data-src=\"D:\\全球交易助手\\产品管理\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\42ae444b7a6f4ca2969733251ad8ad0d\\dImgNew\\DImgNew11_nfpqcpnd.jpg\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\r\n","brand":"Keszoox","offers":[{"title":"L298N","offer_id":46985528901867,"sku":"14:1202#L298N","price":13.32,"currency_code":"USD","in_stock":true},{"title":"New L298N","offer_id":46985528934635,"sku":"14:350852#New L298N","price":17.04,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/l298n-dual-h-bridge-motor-driver-board-module.webp?v=1761273655"},{"product_id":"16-channel-12-bit-pwm-servo-driver-module-pca9685-with-i2c-interface-for-arduino-and-raspberry-pi","title":"16-Channel 12-Bit PWM Servo Driver Module PCA9685 with I2C Interface for Arduino and Raspberry Pi","description":"\u003ch1\u003eSPECIFICATIONS\u003c\/h1\u003e\u003cp\u003e\u003cspan\u003eBrand Name\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eKeszoox\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eChoice\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eyes\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eCondition\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNew\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eDissipation Power\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eHigh-concerned chemical\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNone\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOperating Temperature\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOrigin\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMainland China\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSupply Voltage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eType\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eModule\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eis_customized\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eYes\u003c\/span\u003e\u003c\/p\u003e\u003cdiv class=\"detailmodule_image\"\u003e\n\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/S360a27c7d3dc4006b723961a6c02a2f2v.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Sbcb47f892d4e478d9679d336f7e8e078I.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Sf8dd5aac4fcd45a38812c89d8ec2548eP.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/S61e7b8325af64b52b6571deab015c7c2h.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Sa1ae75515c5e4e6f92584ba65d75fa37X.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Sa652b4e5b51f48eeb509486197bfe6931.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/S845b049e41cd4b37a33ecb10549340a8q.jpg\" class=\"detail-desc-decorate-image\"\u003e\n\u003c\/div\u003e\r\n\u003cdiv class=\"detailmodule_image\"\u003e\n\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/S0e21b31a354d4289bbadaf8a3b46d5b4o.jpg\" class=\"detail-desc-decorate-image\"\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/S4773dcc652a4420b89fc2d6ee201354eA.jpg\" class=\"detail-desc-decorate-image\"\u003e\n\u003c\/div\u003e\r\n","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":46985543483627,"sku":"\u003cnone\u003e","price":14.08,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/pca9685-16ch-12bit-pwm-servo-driver.webp?v=1761199505"},{"product_id":"tb6612fng-drv8833-dual-motor-driver-module-1-2a-3-2a-peak-arduino","title":"TB6612FNG \/ DRV8833 Dual Motor Driver Module | 1.2A \/ 3.2A Peak | CW\/CCW\/Brake\/Stop | Arduino Microcontroller","description":"\u003ch2\u003eTB6612FNG \/ DRV8833 Dual Motor Driver Module — 1.2A \/ 3.2A Peak | CW\/CCW\/Brake\/Stop | Arduino\u003c\/h2\u003e\n\n\u003cp\u003eA compact \u003cstrong\u003edual H-bridge motor driver module\u003c\/strong\u003e based on the Toshiba TB6612FNG or Texas Instruments DRV8833 IC — providing independent bidirectional control of two DC motors (or one stepper motor) from any microcontroller with PWM output. The H-bridge architecture enables full CW\/CCW rotation, PWM speed control, active braking, and coast (stop) modes for each motor channel independently. Built-in thermal shutdown and low voltage detection protect the driver IC from damage under fault conditions. The 0.8×0.8 inch form factor fits in compact robot and automation projects. Available in TB6612FNG (welded), TB6612FNG (solderless), and DRV8833 variants.\u003c\/p\u003e\n\n\u003ch3\u003eSpecifications\u003c\/h3\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eDriver IC Options\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eTB6612FNG (Toshiba) \/ DRV8833 (Texas Instruments)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eMotor Supply Voltage (VM)\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e2.5V – 15V (TB6612FNG) \/ 2.7V – 10.8V (DRV8833)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLogic Supply Voltage (VCC)\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e2.7V – 5.5V\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOutput Current (average)\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e1.2A per channel\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOutput Current (peak)\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e3.2A per channel\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eMotor Channels\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e2 (independent)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eControl Modes\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eCW \/ CCW \/ Short Brake \/ Stop (coast)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eStandby Control\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eYes (STBY pin)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eProtection\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eThermal shutdown, low voltage detection\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eDimensions\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e0.8 × 0.8 inches (~20 × 20mm)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOrigin\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eMainland China\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\u003ch3\u003eTB6612FNG vs. DRV8833 — Which to Choose\u003c\/h3\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n\u003cth\u003eFeature\u003c\/th\u003e\n\u003cth\u003eTB6612FNG\u003c\/th\u003e\n\u003cth\u003eDRV8833\u003c\/th\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eMotor supply voltage\u003c\/td\u003e\n\u003ctd\u003e2.5V – 15V\u003c\/td\u003e\n\u003ctd\u003e2.7V – 10.8V\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eOutput current (avg)\u003c\/td\u003e\n\u003ctd\u003e1.2A per channel\u003c\/td\u003e\n\u003ctd\u003e1.5A per channel\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eOutput current (peak)\u003c\/td\u003e\n\u003ctd\u003e3.2A per channel\u003c\/td\u003e\n\u003ctd\u003e2.0A per channel\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eStandby mode\u003c\/td\u003e\n\u003ctd\u003eYes (STBY pin)\u003c\/td\u003e\n\u003ctd\u003eSleep mode\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eBest for\u003c\/td\u003e\n\u003ctd\u003eHigher voltage motors, peak current applications\u003c\/td\u003e\n\u003ctd\u003eLower voltage, higher average current\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\u003ch3\u003eControl Mode Truth Table (TB6612FNG)\u003c\/h3\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n\u003cth\u003eIN1\u003c\/th\u003e\n\u003cth\u003eIN2\u003c\/th\u003e\n\u003cth\u003ePWM\u003c\/th\u003e\n\u003cth\u003eMode\u003c\/th\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eH\u003c\/td\u003e\n\u003ctd\u003eL\u003c\/td\u003e\n\u003ctd\u003eH\u003c\/td\u003e\n\u003ctd\u003eCW (clockwise)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eL\u003c\/td\u003e\n\u003ctd\u003eH\u003c\/td\u003e\n\u003ctd\u003eH\u003c\/td\u003e\n\u003ctd\u003eCCW (counter-clockwise)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eH\u003c\/td\u003e\n\u003ctd\u003eH\u003c\/td\u003e\n\u003ctd\u003eH\u003c\/td\u003e\n\u003ctd\u003eShort brake\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eL\u003c\/td\u003e\n\u003ctd\u003eL\u003c\/td\u003e\n\u003ctd\u003eX\u003c\/td\u003e\n\u003ctd\u003eStop (coast)\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\u003ch3\u003eKey Features\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eDual H-bridge\u003c\/strong\u003e — independent bidirectional control of 2 DC motors or 1 stepper motor\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003e1.2A average \/ 3.2A peak per channel\u003c\/strong\u003e — handles small to medium DC motors\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eCW\/CCW\/brake\/stop modes\u003c\/strong\u003e — full motor control including active braking\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003ePWM speed control\u003c\/strong\u003e — smooth speed control via PWM signal from Arduino\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003e2.7V–5.5V logic supply\u003c\/strong\u003e — compatible with Arduino (5V) and ESP32\/STM32 (3.3V)\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eThermal shutdown\u003c\/strong\u003e — protects the driver IC from overtemperature damage\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eLow voltage detection\u003c\/strong\u003e — protects motors from undervoltage operation\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eCompact 0.8×0.8 inch\u003c\/strong\u003e — fits in small robot and automation project enclosures\u003c\/li\u003e\n  \u003cli\u003e✅ \u003cstrong\u003eStandby control\u003c\/strong\u003e — STBY pin enables low-power standby mode\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eCommon Applications\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eArduino DC motor control (2 motors)\u003c\/li\u003e\n  \u003cli\u003eRobot drive motor controller\u003c\/li\u003e\n  \u003cli\u003eStepper motor driver (bipolar stepper, 1 motor)\u003c\/li\u003e\n  \u003cli\u003eRC car motor controller\u003c\/li\u003e\n  \u003cli\u003eCamera gimbal motor driver\u003c\/li\u003e\n  \u003cli\u003eConveyor and automation motor control\u003c\/li\u003e\n  \u003cli\u003eFan speed control\u003c\/li\u003e\n  \u003cli\u003ePump motor control\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eArduino Wiring (TB6612FNG)\u003c\/h3\u003e\n\u003col\u003e\n  \u003cli\u003eConnect VM to motor supply voltage (2.5V–15V).\u003c\/li\u003e\n  \u003cli\u003eConnect VCC to Arduino 5V (logic supply).\u003c\/li\u003e\n  \u003cli\u003eConnect GND to Arduino GND.\u003c\/li\u003e\n  \u003cli\u003eConnect STBY to Arduino 5V (or a digital pin) to enable the driver.\u003c\/li\u003e\n  \u003cli\u003eConnect AIN1, AIN2 to Arduino digital pins for motor A direction control.\u003c\/li\u003e\n  \u003cli\u003eConnect PWMA to Arduino PWM pin for motor A speed control.\u003c\/li\u003e\n  \u003cli\u003eConnect motor A wires to AO1 and AO2 terminals.\u003c\/li\u003e\n  \u003cli\u003eRepeat for motor B (BIN1, BIN2, PWMB, BO1, BO2).\u003c\/li\u003e\n\u003c\/ol\u003e\n\n\u003ch3\u003eFrequently Asked Questions\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Can I drive a stepper motor with this module?\u003c\/strong\u003e\u003cbr\u003eA: Yes. Connect the two coils of a bipolar stepper motor to channels A and B. Use a stepper library (e.g., AccelStepper) to control the step sequence.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: What is the difference between “welded” and “solderless” TB6612FNG variants?\u003c\/strong\u003e\u003cbr\u003eA: The “welded” variant has header pins pre-soldered. The “solderless” variant is supplied without header pins, allowing you to solder your own headers or wires directly to the PCB pads.\u003c\/p\u003e\n\n\u003ch3\u003ePackage Contents\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e1× TB6612FNG or DRV8833 Dual Motor Driver Module (variant as selected)\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"TB6612FNG Weld","offer_id":46985553412331,"sku":"14:173#TB6612FNG Weld","price":11.8,"currency_code":"USD","in_stock":true},{"title":"DRV8833","offer_id":46985553445099,"sku":"14:193#DRV8833","price":8.24,"currency_code":"USD","in_stock":true},{"title":"TB6612FNG solderless","offer_id":46985553477867,"sku":"14:29#TB6612FNG solderless","price":10.8,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/tb6612fng-dual-motor-driver-arduino.webp?v=1761197735"},{"product_id":"5pcs-ftp11n08a-n-channel-mosfet-to-220-75v-100a-power-transistor-for-inverter-and-motor-control-circuits","title":"5PCS FTP11N08A N-Channel MOSFET TO-220 75V 100A Power Transistor for Inverter and Motor Control Circuits","description":"\u003ch1\u003eSPECIFICATIONS\u003c\/h1\u003e\u003cp\u003e\u003cspan\u003eBrand Name\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eKeszoox\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eChoice\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eyes\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eCondition\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNew\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eDissipation Power\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eHigh-concerned chemical\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNone\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOperating Temperature\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOrigin\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMainland China\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSupply Voltage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eType\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eLogic ICs\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eis_customized\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eYes\u003c\/span\u003e\u003c\/p\u003e\u003cdiv class=\"detailmodule_html\"\u003e\u003cdiv class=\"detail-desc-decorate-richtext\"\u003e\u003cdiv\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/Sdbce8a5c20aa4991982b677d4520837ft.jpg\" style=\"width:800px;\" data-src=\"D:\\全球交易助手\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\fa32ec3439d44bf889b4cc869c1b3ac5\\dImgNew\\DImgNew2_9lu941qa.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/S0e21b31a354d4289bbadaf8a3b46d5b4o.jpg\" style=\"width:800px;\" data-src=\"D:\\全球交易助手\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\fa32ec3439d44bf889b4cc869c1b3ac5\\dImgNew\\DImgNew3_9lu941qa.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/S4773dcc652a4420b89fc2d6ee201354eA.jpg\" style=\"width:800px;\" data-src=\"D:\\全球交易助手\\Platforms\\AliChoice\\Data\\AliChoice-cn1093225002neeae-6000948202\\Images\\fa32ec3439d44bf889b4cc869c1b3ac5\\dImgNew\\DImgNew4_9lu941qa.jpg\"\u003e\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":46985556426987,"sku":"\u003cnone\u003e","price":15.4,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/ftp11n08a-n-channel-mosfet-to220-75v-100a-power-transistor.webp?v=1761192542"},{"product_id":"metal-alloy-robot-manipulator-mechanical-arm-claw-kit-mg996r-for-arduino-robotics","title":"Metal Alloy Robot Manipulator Mechanical Arm Claw Kit MG996R for Arduino Robotics","description":"\u003ch1\u003eSPECIFICATIONS\u003c\/h1\u003e\u003cp\u003e\u003cspan\u003eApplication\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eElectric Toy\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eBrand Name\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eKeszoox\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eCondition\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNew\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eDissipation Power\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eFunctions\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eElectronic Module\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eHigh-concerned chemical\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNone\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOperating Temperature\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOrigin\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMainland China\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003ePackage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eSMD\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eRange of application\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eSwitch And Sensor For Arduino STM\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSupply Voltage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eStandard\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eType\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eModule\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eis_customized\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eYes\u003c\/span\u003e\u003c\/p\u003e\u003cdiv class=\"detailmodule_html\"\u003e\u003cdiv class=\"detail-desc-decorate-richtext\"\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/S3d37943c254a44599f05830cadbd0b33W.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/S3d37943c254a44599f05830cadbd0b33W.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/S40180e880a444ea6bf2a1b4e10df539eG.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/S40180e880a444ea6bf2a1b4e10df539eG.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/S60eae6a3e89f491f9f8d4d4d09c469660.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/S60eae6a3e89f491f9f8d4d4d09c469660.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/S7a9f7b74da3046cd8e585f6a7d0086eb8.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/S7a9f7b74da3046cd8e585f6a7d0086eb8.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/S7772981bd2d44912998db8be7750245aq.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/S7772981bd2d44912998db8be7750245aq.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/S2365d75db967476b90ca47a7ad99d8cfM.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/S2365d75db967476b90ca47a7ad99d8cfM.jpg\"\u003e\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/div\u003e\r\n","brand":"Keszoox","offers":[{"title":"silver","offer_id":46991425339627,"sku":"14:1202#silver","price":20.72,"currency_code":"USD","in_stock":true},{"title":"black","offer_id":46991425372395,"sku":"14:350852#black","price":21.52,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/metal-robot-manipulator-mg996r-claw.webp?v=1761889000"},{"product_id":"cnc-shield-v3-expansion-board-for-engraving-machine-and-3d-printer-with-a4988-drv8825-drivers","title":"CNC Shield V3 Expansion Board for Engraving Machine and 3D Printer with A4988\/DRV8825 Drivers","description":"\u003ch1\u003eSPECIFICATIONS\u003c\/h1\u003e\u003cp\u003e\u003cspan\u003eApplication\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eComputer\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eBrand Name\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eKeszoox\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eCondition\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNew\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eDissipation Power\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e...\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eFunctions\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eElectronic Module\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eHigh-concerned chemical\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eNone\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOperating Temperature\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e-40-+85\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eOrigin\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eMainland China\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003ePackage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eDIY KIT\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eRange of application\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eSwitch And Sensor For Arduino STM\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eSupply Voltage\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003e...\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eType\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eModule\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan\u003eis_customized\u003c\/span\u003e: \u003cspan style=\"color:#333\"\u003eYes\u003c\/span\u003e\u003c\/p\u003e\u003cdiv class=\"detailmodule_html\"\u003e\u003cdiv class=\"detail-desc-decorate-richtext\"\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/S4037fb89b940431e971082b22696f8bdw.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/S4037fb89b940431e971082b22696f8bdw.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/S5e5f34b99c2e45f59b38bb71642b66323.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/S5e5f34b99c2e45f59b38bb71642b66323.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sfd41a9b3188640b1b3e345478f9f86d44.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/Sfd41a9b3188640b1b3e345478f9f86d44.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sa2088e3d748b4342be3ed5717bf094d0o.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/Sa2088e3d748b4342be3ed5717bf094d0o.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/Sa0e902d5e68049cbb8dc47491dd06fbeQ.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/Sa0e902d5e68049cbb8dc47491dd06fbeQ.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg style=\"width:1000px;\" src=\"https:\/\/ae01.alicdn.com\/kf\/Seee4db6272f14b91acb253b30eda69d3z.jpg\" data-src=\"https:\/\/ae01.alicdn.com\/kf\/Seee4db6272f14b91acb253b30eda69d3z.jpg\"\u003e\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/div\u003e\r\n","brand":"Keszoox","offers":[{"title":"DRV8825 1set","offer_id":46991427010795,"sku":"14:350852#DRV8825 1set","price":27.32,"currency_code":"USD","in_stock":true},{"title":"a4988 1set","offer_id":46991427043563,"sku":"14:1202#a4988 1set","price":19.72,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/cnc-shield-v3-expansion-board-a4988-drv8825.webp?v=1761885188"},{"product_id":"micro-servo-tester-sg90-mg90s-sg92r-4-8-6v-pwm-signal-generator-arduino-rc","title":"Micro Servo Tester — SG90 \/ MG90S \/ SG92R, 4.8–6V, PWM Signal Generator, Arduino \u0026 RC","description":"\u003ch2\u003eMicro Servo Tester — SG90 \/ MG90S \/ SG92R, PWM Signal Generator, Manual \/ Auto \/ Neutral Modes\u003c\/h2\u003e\u003cp\u003eThis \u003cstrong\u003emicro servo tester\u003c\/strong\u003e generates standard PWM servo signals (1–2ms pulse, 50Hz) to test and calibrate servo motors without a microcontroller or RC receiver. Compatible with SG90, MG90S, SG92R, and most standard hobby servos, it features three operating modes — Manual, Auto sweep, and Neutral — making it an essential bench tool for Arduino servo development, RC model setup, and robotic arm calibration.\u003c\/p\u003e\u003ch3\u003eKey Specifications\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eCompatible Servos\u003c\/td\u003e\n\u003ctd\u003eSG90, MG90S, SG92R, standard hobby servos\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSupply Voltage\u003c\/td\u003e\n\u003ctd\u003e4.8V – 6V (servo power)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePWM Output\u003c\/td\u003e\n\u003ctd\u003e1–2ms pulse width, 50Hz frequency\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOperating Modes\u003c\/td\u003e\n\u003ctd\u003eManual, Auto sweep, Neutral\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOperating Temperature\u003c\/td\u003e\n\u003ctd\u003e-30°C to +60°C\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eConnector\u003c\/td\u003e\n\u003ctd\u003eStandard 3-pin servo connector (Signal\/VCC\/GND)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003eOperating Modes Explained\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eManual mode\u003c\/strong\u003e — turn the knob to set any servo position from 0° to 180° manually\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAuto sweep mode\u003c\/strong\u003e — servo automatically sweeps full range continuously for range and speed testing\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eNeutral mode\u003c\/strong\u003e — outputs fixed 1.5ms pulse to center the servo at 90° (neutral position)\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eWhy Choose This Servo Tester?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e✅ \u003cstrong\u003eNo microcontroller needed\u003c\/strong\u003e — test servos directly from a battery or BEC\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003e3 test modes\u003c\/strong\u003e — manual, auto sweep, and neutral for comprehensive testing\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eStandard 3-pin connector\u003c\/strong\u003e — plug-and-play with SG90, MG90S, SG92R and most hobby servos\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003e4.8–6V supply\u003c\/strong\u003e — powered directly from RC battery pack or BEC\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eCompact and portable\u003c\/strong\u003e — fits in a toolbox for field use\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eTypical Applications\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003eServo motor function and range testing\u003c\/li\u003e\n\u003cli\u003eRC model servo calibration before installation\u003c\/li\u003e\n\u003cli\u003eArduino servo project development and debugging\u003c\/li\u003e\n\u003cli\u003eServo center point (neutral) calibration\u003c\/li\u003e\n\u003cli\u003eRobotic arm servo position verification\u003c\/li\u003e\n\u003cli\u003eServo speed and torque comparison testing\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\u003cli\u003e1 × Micro Servo Tester (PWM Signal Generator)\u003c\/li\u003e\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"SG90","offer_id":46991432155371,"sku":"14:10#SG90","price":8.32,"currency_code":"USD","in_stock":true},{"title":"SG90 1set","offer_id":46991432188139,"sku":"14:94#SG90 1set","price":816.0,"currency_code":"USD","in_stock":true},{"title":"MG90S","offer_id":46991432220907,"sku":"14:29#MG90S","price":8.96,"currency_code":"USD","in_stock":true},{"title":"Bracket","offer_id":46991432253675,"sku":"14:175#Bracket","price":5.96,"currency_code":"USD","in_stock":true},{"title":"MG90S 1set","offer_id":46991432286443,"sku":"14:173#MG90S 1set","price":9.0,"currency_code":"USD","in_stock":true},{"title":"SG92R","offer_id":46991432319211,"sku":"14:193#SG92R","price":9.36,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/smart-micro-servo-tester-sg90-mg90s-sg92r-arduino-rc-models.webp?v=1761882563"},{"product_id":"tt-gear-motor-3-12v-dc-1-48-ratio-800gf-cm-torque-arduino-robot-chassis","title":"TT Gear Motor — 3–12V DC, 1:48 Ratio, 800gf·cm Torque, Arduino Robot Chassis Drive","description":"\u003ch2\u003eTT Gear Motor — 3–12V DC, 1:48 Gear Ratio, 800gf·cm Torque, Arduino Robot Chassis\u003c\/h2\u003e\u003cp\u003eThe \u003cstrong\u003eTT gear motor\u003c\/strong\u003e (also known as the \"yellow motor\" or \"smart car motor\") is the most widely used DC gear motor for Arduino robot chassis, smart car kits, and DIY wheeled robots. With a 1:48 gear ratio delivering 800gf·cm of torque and a wide 3–12V operating range, it provides the right balance of speed and torque for two-wheel and four-wheel drive robot platforms.\u003c\/p\u003e\u003ch3\u003eKey Specifications\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eOperating Voltage\u003c\/td\u003e\n\u003ctd\u003e3V – 12V DC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eGear Ratio\u003c\/td\u003e\n\u003ctd\u003e1:48\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNo-Load Speed (5V)\u003c\/td\u003e\n\u003ctd\u003e~200 RPM\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNo-Load Current\u003c\/td\u003e\n\u003ctd\u003e~70mA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLoad Current\u003c\/td\u003e\n\u003ctd\u003e~70mA (rated)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eStall Torque\u003c\/td\u003e\n\u003ctd\u003e800gf·cm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eShaft Diameter\u003c\/td\u003e\n\u003ctd\u003eD-shaped, compatible with TT wheels\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eEMC\u003c\/td\u003e\n\u003ctd\u003eCapacitor-equipped for noise suppression\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003eTT Motor vs N20 Motor — Which to Choose?\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eFeature\u003c\/th\u003e\n\u003cth\u003eTT Gear Motor\u003c\/th\u003e\n\u003cth\u003eN20 Gear Motor\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eSize\u003c\/td\u003e\n\u003ctd\u003eLarger\u003c\/td\u003e\n\u003ctd\u003eCompact (20mm diameter)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eTorque\u003c\/td\u003e\n\u003ctd\u003e800gf·cm\u003c\/td\u003e\n\u003ctd\u003eUp to 1000gf·cm (varies)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCost\u003c\/td\u003e\n\u003ctd\u003eLower\u003c\/td\u003e\n\u003ctd\u003eHigher\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eBest For\u003c\/td\u003e\n\u003ctd\u003eStandard robot chassis, smart cars\u003c\/td\u003e\n\u003ctd\u003eCompact robots, precision mechanisms\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003eWhy Choose TT Gear Motor?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e✅ \u003cstrong\u003eUniversal robot chassis standard\u003c\/strong\u003e — fits all standard TT motor mounts and brackets\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003e3–12V wide range\u003c\/strong\u003e — works with 3.7V LiPo, 5V USB, 6V AA pack, or 12V supply\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eD-shaft output\u003c\/strong\u003e — compatible with all standard TT wheels (65mm, 68mm)\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eEMC capacitors\u003c\/strong\u003e — reduces PWM noise interference on microcontroller\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eLow cost\u003c\/strong\u003e — most affordable motor for robot chassis builds\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eTypical Applications\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003eArduino smart car and line-following robot\u003c\/li\u003e\n\u003cli\u003e2WD \/ 4WD robot chassis drive\u003c\/li\u003e\n\u003cli\u003eDIY wheeled robot platform\u003c\/li\u003e\n\u003cli\u003eObstacle avoidance robot\u003c\/li\u003e\n\u003cli\u003eRemote-controlled car build\u003c\/li\u003e\n\u003cli\u003eSTEM education robotics kit\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\u003cli\u003e1 × TT DC Gear Motor (3–12V, 1:48)\u003c\/li\u003e\u003c\/ul\u003e\u003cp\u003e\u003cem\u003eWheels and motor driver not included.\u003c\/em\u003e\u003c\/p\u003e","brand":"Keszoox","offers":[{"title":"motor","offer_id":46991432876267,"sku":"14:350852#motor","price":5.24,"currency_code":"USD","in_stock":true},{"title":"wheel","offer_id":46991432909035,"sku":"14:10#wheel","price":4.96,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/tt-gear-motor-arduino-smart-car-robot.webp?v=1761882256"},{"product_id":"tt-130-dc-gear-motor-3v-6v-arduino-smart-car-robot-chassis","title":"TT 130 DC Gear Motor — 3V–6V, Arduino Smart Car \u0026 Robot Chassis Drive","description":"\u003ch2\u003eTT 130 DC Gear Motor — 3V–6V, Arduino Smart Car \u0026amp; Robot Chassis\u003c\/h2\u003e\u003cp\u003eThe \u003cstrong\u003eTT 130 gear motor\u003c\/strong\u003e is a compact, lightweight DC gear motor designed for Arduino smart car kits, 2WD\/4WD robot chassis, and DIY wheeled robot platforms. Operating on 3–6V DC, it is compatible with standard TT motor mounts, 65mm rubber wheels, and L298N \/ L9110S motor driver modules, making it the ideal drive motor for beginner and intermediate robotics projects.\u003c\/p\u003e\u003ch3\u003eKey Specifications\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eOperating Voltage\u003c\/td\u003e\n\u003ctd\u003e3V – 6V DC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMotor Type\u003c\/td\u003e\n\u003ctd\u003e130 DC motor with gearbox\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eShaft Type\u003c\/td\u003e\n\u003ctd\u003eD-shaped (TT wheel compatible)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCompatible Wheels\u003c\/td\u003e\n\u003ctd\u003e65mm TT rubber wheels\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCompatible Drivers\u003c\/td\u003e\n\u003ctd\u003eL298N, L9110S, TB6612FNG\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMount Type\u003c\/td\u003e\n\u003ctd\u003eStandard TT motor bracket compatible\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003eWhy Choose TT 130 Motor?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e✅ \u003cstrong\u003e3–6V operating range\u003c\/strong\u003e — compatible with 3.7V LiPo, 4×AA (6V), and 5V USB power\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eStandard TT form factor\u003c\/strong\u003e — fits all standard TT motor mounts and chassis kits\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eD-shaft output\u003c\/strong\u003e — secure fit with 65mm TT wheels, no slipping\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eLightweight\u003c\/strong\u003e — minimal weight addition to robot chassis\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eLow cost\u003c\/strong\u003e — affordable for multi-motor 4WD builds\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eTypical Applications\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003eArduino 2WD \/ 4WD smart car chassis\u003c\/li\u003e\n\u003cli\u003eLine-following robot drive motor\u003c\/li\u003e\n\u003cli\u003eObstacle avoidance robot\u003c\/li\u003e\n\u003cli\u003eRemote-controlled wheeled robot\u003c\/li\u003e\n\u003cli\u003eSTEM education robotics kit\u003c\/li\u003e\n\u003cli\u003eDIY conveyor belt and mechanism drive\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\u003cli\u003e1 × TT 130 DC Gear Motor\u003c\/li\u003e\u003c\/ul\u003e\u003cp\u003e\u003cem\u003eWheels, motor driver, and chassis not included.\u003c\/em\u003e\u003c\/p\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":46991433105643,"sku":"\u003cnone\u003e","price":9.08,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/tt-130-gear-motor-arduino-smart-car-robot-dc-3-6v.webp?v=1761882133"},{"product_id":"mg90s-9g-digital-micro-servo-metal-gear-1-8kg-cm-4-8-6v-rc-arduino","title":"MG90S 9g Digital Micro Servo — Metal Gear, 1.8kg·cm Torque, 4.8–6V, for RC \u0026 Arduino","description":"\u003ch2\u003eMG90S 9g Digital Micro Servo — Metal Gear, 1.8kg·cm Torque, 4.8–6V\u003c\/h2\u003e\u003cp\u003eThe \u003cstrong\u003eMG90S\u003c\/strong\u003e is a compact 9g digital micro servo featuring \u003cstrong\u003emetal gears\u003c\/strong\u003e for significantly improved durability and torque compared to the plastic-gear SG90. With 1.8kg·cm stall torque at 4.8V and a fast 0.1s\/60° response, it is the preferred servo for Arduino robotics, RC aircraft control surfaces, robotic arms, and any application where the SG90's plastic gears are insufficient.\u003c\/p\u003e\u003ch3\u003eKey Specifications\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eWeight\u003c\/td\u003e\n\u003ctd\u003e13.4g\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDimensions\u003c\/td\u003e\n\u003ctd\u003e22.5 × 12 × 35.5mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eStall Torque\u003c\/td\u003e\n\u003ctd\u003e1.8kg·cm (4.8V) \/ 2.2kg·cm (6V)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOperating Speed\u003c\/td\u003e\n\u003ctd\u003e0.1s \/ 60° (4.8V)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSupply Voltage\u003c\/td\u003e\n\u003ctd\u003e4.8V – 6V\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eGear Type\u003c\/td\u003e\n\u003ctd\u003eMetal (brass\/steel)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eControl Signal\u003c\/td\u003e\n\u003ctd\u003ePWM (1–2ms pulse, 50Hz)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eConnector\u003c\/td\u003e\n\u003ctd\u003eStandard 3-pin (Signal\/VCC\/GND)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOperating Temperature\u003c\/td\u003e\n\u003ctd\u003e0°C to +55°C\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003eMG90S vs SG90 — Which to Choose?\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eFeature\u003c\/th\u003e\n\u003cth\u003eMG90S\u003c\/th\u003e\n\u003cth\u003eSG90\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eGear Material\u003c\/td\u003e\n\u003ctd\u003eMetal (brass\/steel)\u003c\/td\u003e\n\u003ctd\u003ePlastic\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eStall Torque\u003c\/td\u003e\n\u003ctd\u003e1.8kg·cm\u003c\/td\u003e\n\u003ctd\u003e1.6kg·cm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDurability\u003c\/td\u003e\n\u003ctd\u003eHigh (metal gears)\u003c\/td\u003e\n\u003ctd\u003eLower (plastic strips under load)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWeight\u003c\/td\u003e\n\u003ctd\u003e13.4g\u003c\/td\u003e\n\u003ctd\u003e9g\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eBest For\u003c\/td\u003e\n\u003ctd\u003eRobotics, RC aircraft, heavy loads\u003c\/td\u003e\n\u003ctd\u003eLight loads, educational projects\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003eWhy Choose MG90S?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e✅ \u003cstrong\u003eMetal gears\u003c\/strong\u003e — won't strip under load like plastic SG90 gears\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003e1.8–2.2kg·cm torque\u003c\/strong\u003e — handles heavier control surfaces and robotic joints\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eDigital servo\u003c\/strong\u003e — faster response and better holding torque than analog\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eStandard 3-pin connector\u003c\/strong\u003e — plug-and-play with Arduino Servo library\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eCompact 9g form factor\u003c\/strong\u003e — fits standard SG90 mounting holes\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eTypical Applications\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003eArduino robotic arm joint control\u003c\/li\u003e\n\u003cli\u003eRC helicopter swashplate and tail rotor\u003c\/li\u003e\n\u003cli\u003eRC airplane control surface (aileron, elevator, rudder)\u003c\/li\u003e\n\u003cli\u003eRC boat steering servo\u003c\/li\u003e\n\u003cli\u003ePan-tilt camera gimbal\u003c\/li\u003e\n\u003cli\u003eHumanoid robot joint actuator\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e1 × MG90S 9g Digital Micro Servo (metal gear)\u003c\/li\u003e\n\u003cli\u003eMounting screws and servo horns\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":46991435694315,"sku":"\u003cnone\u003e","price":8.32,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/mg90s-9g-digital-servo-plastic-gears-rc-helicopter-plane-boat-car.webp?v=1761880525"},{"product_id":"d2-1-smart-car-diy-kit-line-tracking-tt-motors-patrol-robot-arduino","title":"D2-1 Smart Car DIY Kit — Line Tracking, TT Motors, Patrol Robot, Arduino Compatible","description":"\u003ch2\u003eD2-1 Smart Car DIY Kit — Line Tracking, TT Motors, Patrol Robot\u003c\/h2\u003e\u003cp\u003eThe \u003cstrong\u003eD2-1 smart car DIY kit\u003c\/strong\u003e provides all the mechanical and electronic components needed to build a line-tracking patrol robot. Powered by TT gear motors and controlled by an Arduino-compatible board, it teaches fundamental robotics concepts including motor control, sensor feedback, and autonomous navigation. Ideal for STEM education, maker clubs, and beginner robotics projects.\u003c\/p\u003e\u003ch3\u003eKit Components\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eComponent\u003c\/th\u003e\n\u003cth\u003eDetails\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eChassis\u003c\/td\u003e\n\u003ctd\u003eAcrylic 2WD smart car chassis\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMotors\u003c\/td\u003e\n\u003ctd\u003e2 × TT DC gear motors (3–6V)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWheels\u003c\/td\u003e\n\u003ctd\u003e2 × 65mm rubber wheels + 1 × universal caster\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLine Tracking Sensor\u003c\/td\u003e\n\u003ctd\u003eIR reflective sensor (detects black line on white surface)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMotor Driver\u003c\/td\u003e\n\u003ctd\u003eL298N or L9110S dual H-bridge module\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eController\u003c\/td\u003e\n\u003ctd\u003eArduino-compatible MCU board\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePower\u003c\/td\u003e\n\u003ctd\u003eBattery holder (AA or 18650)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003eWhat You Learn Building This Kit\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eMotor control\u003c\/strong\u003e — PWM speed control and direction via H-bridge\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSensor feedback\u003c\/strong\u003e — IR line detection and analog\/digital reading\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAutonomous navigation\u003c\/strong\u003e — line-following algorithm implementation\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMechanical assembly\u003c\/strong\u003e — chassis, motor mount, and wheel installation\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eArduino programming\u003c\/strong\u003e — sensor-driven motor control logic\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eWhy Choose D2-1 Kit?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e✅ \u003cstrong\u003eComplete kit\u003c\/strong\u003e — all mechanical and electronic parts included\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eArduino compatible\u003c\/strong\u003e — program with Arduino IDE\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eLine tracking sensor included\u003c\/strong\u003e — ready for autonomous patrol behavior\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eExpandable\u003c\/strong\u003e — add ultrasonic sensor, Bluetooth, or WiFi module\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eSTEM education\u003c\/strong\u003e — hands-on robotics learning for beginners\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eTypical Applications\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003eLine-following robot competition\u003c\/li\u003e\n\u003cli\u003eAutonomous patrol robot project\u003c\/li\u003e\n\u003cli\u003eArduino robotics learning kit\u003c\/li\u003e\n\u003cli\u003eSTEM club and school robotics project\u003c\/li\u003e\n\u003cli\u003eMaker Faire and exhibition robot\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\u003cli\u003e1 × D2-1 Smart Car DIY Kit (all components as listed)\u003c\/li\u003e\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"1 set","offer_id":46991445917931,"sku":"14:4044226#1 set","price":21.12,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/d2-1-smart-car-diy-kit-intelligent-line-tracking-tt-motor.webp?v=1761806075"},{"product_id":"l298n-dual-h-bridge-motor-driver-module-dc-stepper-2a-5-35v-arduino","title":"L298N Dual H-Bridge Motor Driver Module — DC \u0026 Stepper, 2A, 5–35V, for Arduino","description":"\u003ch2\u003eL298N Dual H-Bridge Motor Driver Module — DC \u0026amp; Stepper, 2A, 5–35V\u003c\/h2\u003e\u003cp\u003eThe \u003cstrong\u003eL298N motor driver module\u003c\/strong\u003e is the most widely used dual H-bridge motor driver for Arduino robotics and automation projects. It drives two DC motors or one bipolar stepper motor at up to 2A per channel from a 5–35V supply, with onboard 5V regulator to power the Arduino directly from the motor supply. PWM speed control and direction control are handled via simple digital GPIO pins.\u003c\/p\u003e\u003ch3\u003eKey Specifications\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eIC\u003c\/td\u003e\n\u003ctd\u003eST L298N\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMotor Supply Voltage\u003c\/td\u003e\n\u003ctd\u003e5V – 35V DC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLogic Supply\u003c\/td\u003e\n\u003ctd\u003e5V (onboard regulator from motor supply)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMax Output Current\u003c\/td\u003e\n\u003ctd\u003e2A per channel (peak)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMax Power Dissipation\u003c\/td\u003e\n\u003ctd\u003e20W\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMotor Channels\u003c\/td\u003e\n\u003ctd\u003e2 (A and B)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eControl Interface\u003c\/td\u003e\n\u003ctd\u003eDigital GPIO (IN1–IN4) + PWM (ENA, ENB)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMCU Logic Level\u003c\/td\u003e\n\u003ctd\u003e3.3V or 5V compatible\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOnboard 5V Output\u003c\/td\u003e\n\u003ctd\u003eYes (powers Arduino from motor supply)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003eWiring Guide (Arduino)\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eENA\u003c\/strong\u003e → Arduino PWM pin (speed control motor A)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN1, IN2\u003c\/strong\u003e → Arduino digital pins (direction motor A)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIN3, IN4\u003c\/strong\u003e → Arduino digital pins (direction motor B)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eENB\u003c\/strong\u003e → Arduino PWM pin (speed control motor B)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e12V\u003c\/strong\u003e → Motor supply (6–35V)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e5V out\u003c\/strong\u003e → Arduino 5V pin (powers Arduino)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGND\u003c\/strong\u003e → Common ground\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eWhy Choose L298N?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e✅ \u003cstrong\u003e2A per channel\u003c\/strong\u003e — drives TT motors, N20 motors, and NEMA 17 steppers\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eOnboard 5V regulator\u003c\/strong\u003e — powers Arduino directly from motor battery\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003ePWM speed control\u003c\/strong\u003e — smooth variable speed via analogWrite()\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003e3.3V \/ 5V logic\u003c\/strong\u003e — compatible with Arduino, ESP32, Raspberry Pi\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eIndustry standard\u003c\/strong\u003e — extensive library and tutorial support\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eTypical Applications\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003eArduino 2WD \/ 4WD robot chassis motor control\u003c\/li\u003e\n\u003cli\u003eBipolar stepper motor driver (NEMA 17, 28BYJ-48 with adapter)\u003c\/li\u003e\n\u003cli\u003eDC motor speed and direction control\u003c\/li\u003e\n\u003cli\u003eSmart car and line-following robot\u003c\/li\u003e\n\u003cli\u003eCNC and 3D printer axis driver (low-current)\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\u003cli\u003e1 × L298N Dual H-Bridge Motor Driver Module\u003c\/li\u003e\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":46991446343915,"sku":"\u003cnone\u003e","price":11.44,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/l298n-dual-h-bridge-dc-stepper-motor-driver-module.webp?v=1761805516"},{"product_id":"mini-l293d-motor-driver-shield-4-5-25v-600ma-arduino-uno-mega","title":"Mini L293D Motor Driver Shield — 4.5–25V, 600mA\/ch, Arduino UNO \u0026 Mega 2560","description":"\u003ch2\u003eMini L293D Motor Driver Shield — 4.5–25V, 600mA\/ch, Arduino UNO \u0026amp; Mega 2560\u003c\/h2\u003e\n\n\u003cp\u003eThis \u003cstrong\u003emini L293D motor driver shield\u003c\/strong\u003e plugs directly into Arduino UNO or Mega 2560 pin headers, providing a dual H-bridge motor driver for controlling DC motors, stepper motors, and other inductive loads. The L293D IC provides 600mA continuous output per channel (1.2A peak) with built-in overtemperature protection and internal clamp diodes for inductive load protection. Input voltage 4.5–25V DC.\u003c\/p\u003e\n\n\u003ch3\u003eSpecifications\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eDriver IC:\u003c\/strong\u003e L293D (dual H-bridge)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eInput Voltage:\u003c\/strong\u003e DC 4.5V – 25V\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eOutput Current:\u003c\/strong\u003e 600mA per channel (continuous)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePeak Current:\u003c\/strong\u003e 1.2A per channel (non-repetitive)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eChannels:\u003c\/strong\u003e 2 H-bridge channels (controls 2 DC motors or 1 stepper)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eProtection:\u003c\/strong\u003e Overtemperature shutdown, internal clamp diodes\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLogic Input:\u003c\/strong\u003e Up to 1.5V = logic “0” (TTL compatible)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePWM Frequency:\u003c\/strong\u003e Up to 5kHz\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eCompatible:\u003c\/strong\u003e Arduino UNO R3, Mega 2560\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eL293D vs L298N Motor Driver\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eL293D (this shield):\u003c\/strong\u003e 600mA\/ch, built-in clamp diodes, compact shield form — for small DC motors and steppers\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eL298N module:\u003c\/strong\u003e 2A\/ch, external diodes needed, larger module — for higher current motors\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTypical Applications\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eArduino 2-wheel robot DC motor control\u003c\/li\u003e\n  \u003cli\u003eStepper motor control (bipolar, 4-wire)\u003c\/li\u003e\n  \u003cli\u003eSmall conveyor and actuator control\u003c\/li\u003e\n  \u003cli\u003ePan-tilt mechanism motor drive\u003c\/li\u003e\n  \u003cli\u003eArduino motor control learning project\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eMini L293D motor driver shield — 4.5–25V, 600mA\/ch, 1.2A peak, overtemperature protection for Arduino UNO and Mega 2560 DC motor and stepper control.\u003c\/p\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":46991447458027,"sku":"\u003cnone\u003e","price":7.56,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/mini-l293d-motor-driver-module-arduino-expansion-board.webp?v=1761805007"},{"product_id":"pwm-dc-motor-speed-controller-1-8-15v-2a-adjustable-arduino","title":"PWM DC Motor Speed Controller Module — 1.8–15V, 2A, Adjustable, -40°C to 80°C","description":"\u003ch2\u003ePWM DC Motor Speed Controller Module — 1.8–15V, 2A, Adjustable Duty Cycle\u003c\/h2\u003e\u003cp\u003eThis \u003cstrong\u003ePWM DC motor speed controller module\u003c\/strong\u003e provides smooth, stepless speed control for DC motors from 1.8V to 15V at up to 2A continuous current. Using pulse-width modulation (PWM), it adjusts motor speed by varying the duty cycle via an onboard potentiometer — maintaining full motor torque at low speeds unlike resistive voltage divider controllers. Operating from -40°C to +80°C, it is suitable for indoor and outdoor applications.\u003c\/p\u003e\u003ch3\u003eKey Specifications\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eInput Voltage\u003c\/td\u003e\n\u003ctd\u003e1.8V – 15V DC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMax Output Current\u003c\/td\u003e\n\u003ctd\u003e2A continuous\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eControl Method\u003c\/td\u003e\n\u003ctd\u003ePWM (pulse-width modulation)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpeed Adjustment\u003c\/td\u003e\n\u003ctd\u003eOnboard potentiometer (0–100% duty cycle)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePWM Frequency\u003c\/td\u003e\n\u003ctd\u003eFixed (internal oscillator)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOperating Temperature\u003c\/td\u003e\n\u003ctd\u003e-40°C to +80°C\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003ePWM Speed Control vs Resistive Voltage Divider\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eFeature\u003c\/th\u003e\n\u003cth\u003ePWM Controller (This Module)\u003c\/th\u003e\n\u003cth\u003eResistive Divider\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eTorque at Low Speed\u003c\/td\u003e\n\u003ctd\u003eFull torque maintained\u003c\/td\u003e\n\u003ctd\u003eReduced torque\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eEfficiency\u003c\/td\u003e\n\u003ctd\u003eHigh (\u0026gt;90%)\u003c\/td\u003e\n\u003ctd\u003eLow (heat loss)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eHeat Generation\u003c\/td\u003e\n\u003ctd\u003eMinimal\u003c\/td\u003e\n\u003ctd\u003eSignificant\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpeed Range\u003c\/td\u003e\n\u003ctd\u003e0–100% smooth\u003c\/td\u003e\n\u003ctd\u003eLimited range\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003eWhy Choose This PWM Controller?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e✅ \u003cstrong\u003e1.8–15V wide input\u003c\/strong\u003e — compatible with 3.7V LiPo, 5V USB, 9V, and 12V supplies\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eFull torque at low speed\u003c\/strong\u003e — PWM maintains motor torque unlike resistive control\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003e2A continuous\u003c\/strong\u003e — drives small to medium DC motors and fans\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003e-40°C to +80°C\u003c\/strong\u003e — reliable in outdoor and automotive environments\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eSimple potentiometer control\u003c\/strong\u003e — no programming required\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eTypical Applications\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003eDC motor speed control for robots and smart cars\u003c\/li\u003e\n\u003cli\u003eFan speed regulation for cooling systems\u003c\/li\u003e\n\u003cli\u003eArduino motor speed control (external PWM module)\u003c\/li\u003e\n\u003cli\u003eDIY electric vehicle speed controller\u003c\/li\u003e\n\u003cli\u003ePump and conveyor belt speed regulation\u003c\/li\u003e\n\u003cli\u003eLED brightness control (resistive LED loads)\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\u003cli\u003e1 × PWM DC Motor Speed Controller Module (1.8–15V, 2A)\u003c\/li\u003e\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":46991450177771,"sku":"\u003cnone\u003e","price":9.24,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/pwm-dc-motor-speed-controller-1-8v-15v-2a-adjustable-regulator.webp?v=1761801446"},{"product_id":"pwm-dc-motor-speed-controller-module-4-5-35v-12v-24v-adjustable-speed-regulator","title":"PWM DC Motor Speed Controller Module — 4.5–35V, 12V \/ 24V, Adjustable Speed Regulator","description":"\u003ch2\u003ePWM DC Motor Speed Controller Module — 4.5–35V, 12V \/ 24V, Adjustable Speed Regulator\u003c\/h2\u003e\u003cp\u003eThis \u003cstrong\u003ePWM DC motor speed controller module\u003c\/strong\u003e provides smooth, stepless speed regulation for DC motors operating from 4.5V to 35V, covering the most common 12V and 24V DC motor systems. Using pulse-width modulation (PWM), it maintains full motor torque across the entire speed range — unlike resistive voltage dividers that lose torque at low speeds. The onboard potentiometer provides direct manual speed adjustment from 0% to 100% duty cycle.\u003c\/p\u003e\u003ch3\u003eKey Specifications\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eInput Voltage\u003c\/td\u003e\n\u003ctd\u003e4.5V – 35V DC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMax Output Current\u003c\/td\u003e\n\u003ctd\u003eRated current (see variant)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eControl Method\u003c\/td\u003e\n\u003ctd\u003ePWM (pulse-width modulation)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpeed Adjustment\u003c\/td\u003e\n\u003ctd\u003eOnboard potentiometer (0–100% duty cycle)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCompatible Voltages\u003c\/td\u003e\n\u003ctd\u003e5V, 6V, 9V, 12V, 24V, 36V systems\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMotor Type\u003c\/td\u003e\n\u003ctd\u003eBrushed DC motor, fan, pump\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003ePWM Speed Control vs Resistive Control\u003c\/h3\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eFeature\u003c\/th\u003e\n\u003cth\u003ePWM Controller (This Module)\u003c\/th\u003e\n\u003cth\u003eResistive Divider\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eTorque at Low Speed\u003c\/td\u003e\n\u003ctd\u003e✅ Full torque maintained\u003c\/td\u003e\n\u003ctd\u003e❌ Reduced torque\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eEfficiency\u003c\/td\u003e\n\u003ctd\u003e✅ High (\u0026gt;90%)\u003c\/td\u003e\n\u003ctd\u003e❌ Low (heat loss)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eHeat Generation\u003c\/td\u003e\n\u003ctd\u003e✅ Minimal\u003c\/td\u003e\n\u003ctd\u003e❌ Significant\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpeed Range\u003c\/td\u003e\n\u003ctd\u003e✅ 0–100% smooth\u003c\/td\u003e\n\u003ctd\u003e❌ Limited range\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003ch3\u003eWhy Choose This PWM Controller?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e✅ \u003cstrong\u003e4.5–35V wide input\u003c\/strong\u003e — covers 5V, 12V, 24V, and 36V DC motor systems\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eFull torque at low speed\u003c\/strong\u003e — PWM maintains motor torque unlike resistive control\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003e12V \/ 24V compatible\u003c\/strong\u003e — ideal for automotive, industrial, and DIY applications\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eSimple potentiometer control\u003c\/strong\u003e — no programming or MCU required\u003c\/li\u003e\n\u003cli\u003e✅ \u003cstrong\u003eCompact module\u003c\/strong\u003e — easy to integrate into control panels and enclosures\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eTypical Applications\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e12V \/ 24V DC motor speed control for robots and automation\u003c\/li\u003e\n\u003cli\u003eFan and blower speed regulation\u003c\/li\u003e\n\u003cli\u003eWater pump flow rate control\u003c\/li\u003e\n\u003cli\u003eElectric vehicle throttle controller\u003c\/li\u003e\n\u003cli\u003eConveyor belt and actuator speed control\u003c\/li\u003e\n\u003cli\u003eLED brightness control (resistive LED loads)\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\u003cli\u003e1 × PWM DC Motor Speed Controller Module (4.5–35V)\u003c\/li\u003e\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"3-35V","offer_id":46991450374379,"sku":"14:1202#3-35V","price":5.8,"currency_code":"USD","in_stock":true},{"title":"4.5-35V","offer_id":46991450407147,"sku":"14:350852#4.5-35V","price":5.4,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/pwm-dc-motor-speed-controller-4-5-35v-12v-24v-adjustable-speed-regulator.webp?v=1761801323"},{"product_id":"mx612e-brushed-dc-motor-driver-sop8-1-2s-lipo-dual-hbridge-5pack","title":"MX612E Brushed DC Motor Driver IC — SOP-8, 1–2S Li-ion, Dual H-Bridge (5-Pack)","description":"\u003ch2\u003eMX612E Brushed DC Motor Driver IC — SOP-8, 1–2S Li-ion, Dual H-Bridge\u003c\/h2\u003e\u003cp\u003eThe MX612E is a dual H-bridge brushed DC motor driver IC in a compact SOP-8 package, optimized for 1–2S lithium battery-powered applications. It integrates two full H-bridges capable of driving two DC motors independently or one stepper motor, with built-in protection for over-current, over-temperature, and under-voltage lockout (UVLO).\u003c\/p\u003e\u003ch3\u003eKey Specifications\u003c\/h3\u003e\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePackage\u003c\/td\u003e\n\u003ctd\u003eSOP-8 (SMD)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSupply Voltage\u003c\/td\u003e\n\u003ctd\u003e2.5–8.5V (1–2S Li-ion)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOutput Current\u003c\/td\u003e\n\u003ctd\u003e1.2A continuous per channel\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eH-Bridge Channels\u003c\/td\u003e\n\u003ctd\u003e2 (dual H-bridge)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eProtection\u003c\/td\u003e\n\u003ctd\u003eOCP, OTP, UVLO\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLogic Input\u003c\/td\u003e\n\u003ctd\u003e3.3V \/ 5V compatible\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eQuantity\u003c\/td\u003e\n\u003ctd\u003e5 pieces\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\u003ch3\u003eWhy Choose MX612E?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eDual H-bridge\u003c\/strong\u003e — drives two DC motors or one stepper independently\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e1–2S Li-ion optimized\u003c\/strong\u003e — ideal for RC toys, drones, and portable robotics\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSOP-8 compact package\u003c\/strong\u003e — minimal PCB footprint for space-constrained designs\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBuilt-in protection\u003c\/strong\u003e — OCP\/OTP\/UVLO prevents damage under fault conditions\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e3.3V\/5V logic\u003c\/strong\u003e — direct MCU GPIO control without level shifters\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eTypical Applications\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003eRC toy car and robot motor control\u003c\/li\u003e\n\u003cli\u003eMiniature drone actuator drive\u003c\/li\u003e\n\u003cli\u003ePortable robotic arm control\u003c\/li\u003e\n\u003cli\u003eCompact stepper motor driver\u003c\/li\u003e\n\u003cli\u003eBattery-powered embedded motor systems\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\u003cli\u003e5× MX612E Brushed DC Motor Driver IC (SOP-8)\u003c\/li\u003e\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"Default Title","offer_id":46991456108779,"sku":"\u003cnone\u003e","price":8.44,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/mx612e-sop-8-brushed-dc-motor-driver-ic-1-2s-lithium.webp?v=1761800380"},{"product_id":"as5600-12bit-magnetic-encoder-module-i2c-pwm-0-087-degree-arduino","title":"AS5600 12-Bit Magnetic Encoder Module — I²C\/PWM, 0.087° Resolution, Arduino Motor Control","description":"\u003ch2\u003eAS5600 12-Bit Magnetic Encoder Module — I²C\/PWM, 0.087° Resolution, Arduino Motor Control\u003c\/h2\u003e\u003cp\u003eThe AS5600 module is built around the AS5600 contactless magnetic rotary position sensor from ams OSRAM. Using a diametrically magnetized magnet above the IC, it measures absolute angular position from 0° to 360° with 12-bit resolution (0.087° per step) over I²C or analog\/PWM output. With no mechanical contact, it provides wear-free position sensing for motor shaft encoders, robotic joint angle measurement, and gimbal control applications.\u003c\/p\u003e\u003ch3\u003eKey Specifications\u003c\/h3\u003e\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSensor IC\u003c\/td\u003e\n\u003ctd\u003eAS5600 (ams OSRAM)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eResolution\u003c\/td\u003e\n\u003ctd\u003e12-bit (4096 positions per revolution = 0.087°\/step)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOutput Interface\u003c\/td\u003e\n\u003ctd\u003eI²C (address 0x36 fixed) + PWM + Analog\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSupply Voltage\u003c\/td\u003e\n\u003ctd\u003e3.3V – 5V\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMax Rotation Speed\u003c\/td\u003e\n\u003ctd\u003e~1000 RPM (I²C polling limited)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMagnet Type\u003c\/td\u003e\n\u003ctd\u003eDiametrically magnetized, 6mm diameter (included on some modules)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOperating Temperature\u003c\/td\u003e\n\u003ctd\u003e-40°C to +85°C\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eAccuracy\u003c\/td\u003e\n\u003ctd\u003e±0.5° (with proper magnet alignment)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\u003ch3\u003eAS5600 vs AS5048A vs Incremental Encoder\u003c\/h3\u003e\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eFeature\u003c\/th\u003e\n\u003cth\u003eAS5600\u003c\/th\u003e\n\u003cth\u003eAS5048A\u003c\/th\u003e\n\u003cth\u003eIncremental Encoder\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eResolution\u003c\/td\u003e\n\u003ctd\u003e12-bit (4096 steps)\u003c\/td\u003e\n\u003ctd\u003e14-bit (16384 steps)\u003c\/td\u003e\n\u003ctd\u003eVaries (PPR)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOutput\u003c\/td\u003e\n\u003ctd\u003eI²C \/ PWM \/ Analog\u003c\/td\u003e\n\u003ctd\u003eSPI \/ PWM\u003c\/td\u003e\n\u003ctd\u003eQuadrature A\/B pulses\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eAbsolute position\u003c\/td\u003e\n\u003ctd\u003eYes (no homing needed)\u003c\/td\u003e\n\u003ctd\u003eYes\u003c\/td\u003e\n\u003ctd\u003eNo (relative only)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eContactless\u003c\/td\u003e\n\u003ctd\u003eYes\u003c\/td\u003e\n\u003ctd\u003eYes\u003c\/td\u003e\n\u003ctd\u003eNo (mechanical)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eBest for\u003c\/td\u003e\n\u003ctd\u003eMotor FOC, robotics, gimbal\u003c\/td\u003e\n\u003ctd\u003eHigh-precision servo\u003c\/td\u003e\n\u003ctd\u003eSimple speed\/direction\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\u003ch3\u003eWhy Choose AS5600?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003e12-bit absolute position\u003c\/strong\u003e — 4096 unique positions per revolution, no homing required after power-up\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eContactless magnetic sensing\u003c\/strong\u003e — no wear, no mechanical contact, works through non-magnetic enclosures\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eI²C interface\u003c\/strong\u003e — only 2 wires needed, easy integration with Arduino and ESP32\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e3.3V–5V supply\u003c\/strong\u003e — compatible with both Arduino (5V) and ESP32\/STM32 (3.3V)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePWM + Analog output\u003c\/strong\u003e — alternative outputs for systems without I²C capability\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eCompatible With\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eArduino\u003c\/strong\u003e: AS5600 library by Rob Tillaart — \u003ccode\u003eencoder.getAngle()\u003c\/code\u003e returns 0–4095 (0–360°)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eESP32\u003c\/strong\u003e: Wire.h I²C at 3.3V or 5V (with level shifter)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSTM32\u003c\/strong\u003e: HAL I²C driver\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSimpleFOC library\u003c\/strong\u003e: AS5600 is natively supported as position sensor for Field-Oriented Control (FOC) motor drives\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRaspberry Pi\u003c\/strong\u003e: smbus2 Python library\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eFrequently Asked Questions\u003c\/h3\u003e\u003cp\u003e\u003cstrong\u003eQ: What magnet do I need for AS5600?\u003c\/strong\u003e\u003cbr\u003eA: Use a diametrically magnetized cylindrical magnet, 6mm diameter × 2.5mm height, placed 0.5–3mm above the AS5600 IC center. The magnet must be diametrically magnetized (N-S poles on the flat faces, not the curved side). Neodymium (NdFeB) grade N35 or N52 works well. Some AS5600 modules include the magnet.\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003eQ: How do I use AS5600 with SimpleFOC for brushless motor control?\u003c\/strong\u003e\u003cbr\u003eA: Install SimpleFOC library in Arduino IDE. Connect AS5600 SDA\/SCL to Arduino I²C pins. In code: \u003ccode\u003eMagneticSensorI2C sensor = MagneticSensorI2C(AS5600_I2C); sensor.init(); motor.linkSensor(\u0026amp;sensor);\u003c\/code\u003e SimpleFOC uses AS5600 angle feedback for Field-Oriented Control of BLDC motors with DRV8302 or similar gate driver.\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003eQ: Can AS5600 measure angles greater than 360° (multi-turn)?\u003c\/strong\u003e\u003cbr\u003eA: No — AS5600 measures absolute position within one revolution (0–360°). For multi-turn absolute position, use AS5048A with multi-turn counter or add an external turn counter in firmware by tracking direction changes. For simple multi-turn tracking, use an incremental encoder with a counter register.\u003c\/p\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\u003cli\u003e1× AS5600 12-Bit Magnetic Encoder Module (I²C\/PWM\/Analog)\u003c\/li\u003e\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"5PCS","offer_id":46991464300779,"sku":"14:351074#5PCS","price":26.08,"currency_code":"USD","in_stock":true},{"title":"10PCS","offer_id":46991464333547,"sku":"14:4044226#10PCS","price":51.0,"currency_code":"USD","in_stock":true},{"title":"1PCS","offer_id":46991464366315,"sku":"14:1202#1PCS","price":6.36,"currency_code":"USD","in_stock":true},{"title":"2PCS","offer_id":46991464399083,"sku":"14:350852#2PCS","price":11.76,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/as5600-magnetic-encoder-sensor-12bit-high-precision.webp?v=1761720603"},{"product_id":"mx612-mx612e-mx08h-mx08-brushed-dc-motor-driver-ic-sop8-h-bridge-5pack","title":"MX612 \/ MX612E \/ MX08H \/ MX08 Brushed DC Motor Driver IC — SOP-8, H-Bridge (5-Pack)","description":"\u003ch2\u003eMX612 \/ MX612E \/ MX08H \/ MX08 Brushed DC Motor Driver IC — SOP-8, H-Bridge (5-Pack)\u003c\/h2\u003e\u003cp\u003eThe MX612, MX612E, MX08H, and MX08 are SOP-8 H-bridge motor driver ICs designed for bidirectional control of small brushed DC motors. Integrating four power MOSFETs in a full H-bridge configuration with logic-level control inputs, they enable forward, reverse, brake, and coast operation from a single SOP-8 package. Suitable for Arduino and ESP32 robotics projects requiring compact SMD motor drive without external discrete MOSFETs.\u003c\/p\u003e\u003ch3\u003eKey Specifications\u003c\/h3\u003e\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003cth\u003eValue\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePackage\u003c\/td\u003e\n\u003ctd\u003eSOP-8 (SMD)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eTopology\u003c\/td\u003e\n\u003ctd\u003eFull H-bridge (4 integrated MOSFETs)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMotor Type\u003c\/td\u003e\n\u003ctd\u003eBrushed DC motor (bidirectional)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eControl Interface\u003c\/td\u003e\n\u003ctd\u003eLogic-level inputs (IN1, IN2) + PWM enable\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eProtection\u003c\/td\u003e\n\u003ctd\u003eThermal shutdown, overcurrent protection\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOperating Temperature\u003c\/td\u003e\n\u003ctd\u003e-40°C to +85°C\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eQuantity\u003c\/td\u003e\n\u003ctd\u003e5 pieces\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\u003ch3\u003eVariant Overview\u003c\/h3\u003e\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003ePart Number\u003c\/th\u003e\n\u003cth\u003eKey Feature\u003c\/th\u003e\n\u003cth\u003eBest For\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMX612\u003c\/td\u003e\n\u003ctd\u003eStandard H-bridge motor driver\u003c\/td\u003e\n\u003ctd\u003eGeneral small DC motor control\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMX612E\u003c\/td\u003e\n\u003ctd\u003eEnhanced version, lower RDS(on)\u003c\/td\u003e\n\u003ctd\u003eHigher efficiency motor drive\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMX08H\u003c\/td\u003e\n\u003ctd\u003eHigh-current variant\u003c\/td\u003e\n\u003ctd\u003eHigher-torque small motors\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMX08\u003c\/td\u003e\n\u003ctd\u003eStandard variant\u003c\/td\u003e\n\u003ctd\u003eGeneral robotics and toy motor control\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\u003ch3\u003eWhy Choose MX612 \/ MX08H?\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eIntegrated H-bridge\u003c\/strong\u003e — no external MOSFETs or diodes needed, minimal BOM\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSOP-8 compact package\u003c\/strong\u003e — small footprint for compact robot and toy PCB designs\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLogic-level control\u003c\/strong\u003e — directly controlled by Arduino\/ESP32 GPIO pins\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePWM speed control\u003c\/strong\u003e — enable pin accepts PWM for variable motor speed\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eThermal + OCP protection\u003c\/strong\u003e — prevents damage from motor stall or overload\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eCompatible With \/ Common Use Cases\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eArduino robot car\u003c\/strong\u003e: Two MX612 ICs for left and right motor drive on a 2WD robot chassis\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eESP32 motor control\u003c\/strong\u003e: PWM speed control via ESP32 LEDC peripheral + direction via GPIO\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eToy motor repair\u003c\/strong\u003e: Replacement for failed H-bridge IC in RC toys and small appliances\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eConveyor belt control\u003c\/strong\u003e: Small DC motor bidirectional drive for miniature conveyor systems\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCamera gimbal\u003c\/strong\u003e: Brushed DC motor drive for 2-axis gimbal stabilization\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eFrequently Asked Questions\u003c\/h3\u003e\u003cp\u003e\u003cstrong\u003eQ: How do I control motor direction and speed with MX612 from Arduino?\u003c\/strong\u003e\u003cbr\u003eA: Connect IN1 and IN2 to two Arduino digital pins, EN (enable) to a PWM-capable pin. For forward: IN1=HIGH, IN2=LOW, EN=PWM duty cycle (0–255). For reverse: IN1=LOW, IN2=HIGH, EN=PWM. For brake: IN1=HIGH, IN2=HIGH. For coast: EN=LOW. Use \u003ccode\u003eanalogWrite(enPin, speed)\u003c\/code\u003e for speed control.\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003eQ: What is the maximum motor current for MX612?\u003c\/strong\u003e\u003cbr\u003eA: Refer to the MX612 datasheet for the exact continuous current rating — typically 1–2A for SOP-8 H-bridge ICs. For motors drawing more than 1A, use a higher-current driver (L298N for up to 2A per channel, DRV8833 for up to 1.5A, TB6612FNG for up to 1.2A). Always check the motor stall current against the driver rating.\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003eQ: Can MX612E replace L9110S or DRV8833 in an existing design?\u003c\/strong\u003e\u003cbr\u003eA: Only if the pinout and voltage\/current ratings match. SOP-8 H-bridge ICs are not universally pin-compatible. L9110S, DRV8833, and MX612 have different pinouts. Always compare datasheets before substituting. For a well-documented alternative, DRV8833 (TI) or TB6612FNG (Toshiba) have extensive application notes.\u003c\/p\u003e\u003ch3\u003ePackage Contents\u003c\/h3\u003e\u003cul\u003e\u003cli\u003e5× MX612 \/ MX612E \/ MX08H \/ MX08 Brushed DC Motor Driver IC (SOP-8) — variant as selected\u003c\/li\u003e\u003c\/ul\u003e","brand":"Keszoox","offers":[{"title":"MX612E","offer_id":46991464464619,"sku":"14:1202#MX612E","price":5.36,"currency_code":"USD","in_stock":true},{"title":"MX08H","offer_id":46991464497387,"sku":"14:350852#MX08H","price":5.48,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/files\/mx612-mx612e-mx08h-sop8-motor-driver-ic.webp?v=1761720420"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0677\/1005\/8731\/collections\/image_7f2fe584-b2bb-472d-85a7-a779cacd5a04.png?v=1776233452","url":"https:\/\/keszoox.com\/collections\/motors-servos-drivers.oembed?page=3","provider":"Keszoox","version":"1.0","type":"link"}