Difference between revisions of "SG90 Servo"

From Sketching with Hardware at LMU Wiki
Jump to navigation Jump to search
 
Line 4: Line 4:
 
'''If it does not work, keeps disconnecting, or rebooting the ESP the power is not sufficent and you need  a capacitor ot an extra power supply.'''
 
'''If it does not work, keeps disconnecting, or rebooting the ESP the power is not sufficent and you need  a capacitor ot an extra power supply.'''
  
See the last section below ([[SG90 Servo:Power Issues]]) and the video for details how to do this.
+
See the last section below ([[SG90 Servo#Power Issues]]) and the video for details how to do this.
  
 
= Schematic - Connecting the SG90 =
 
= Schematic - Connecting the SG90 =

Latest revision as of 23:25, 29 December 2020

IMPORTANT[edit]

In many computers the current is not enough to drive the servo!!!

If it does not work, keeps disconnecting, or rebooting the ESP the power is not sufficent and you need a capacitor ot an extra power supply.

See the last section below (SG90 Servo#Power Issues) and the video for details how to do this.

Schematic - Connecting the SG90[edit]

Servo00.jpg

Servo01.jpg

Code Examples ESP8266[edit]

Basic control[edit]

Assuming the servo is connected to Pin 5.

 1 from machine import Pin,PWM
 2 from time import sleep
 3 
 4 servoPin = Pin(5, Pin.OUT)
 5 pwm =  PWM(servoPin, freq=50)
 6 pwm.deinit() # workaround to reset PWM
 7 pwm = PWM(servoPin, freq=50)
 8 
 9 val = 50
10 
11 while True:
12   pwm.duty(val)
13   val = val + 1
14   if val>100:
15     val = 50
16   print(val)
17   sleep(0.05)

Controlling the servo with a Poti[edit]

A0 is the analog input with 10 bit resolution. It reads the analog value every second and print it to the console and sets the servo based on the analog input.

 1 from machine import Pin, ADC, PWM
 2 from time import sleep
 3 
 4 analogPin = ADC(0)
 5 servoPin = Pin(5, Pin.OUT)
 6 pwm =  PWM(servoPin, freq=50)
 7 pwm.deinit()
 8 pwm = PWM(servoPin, freq=50)
 9 
10 while True:
11   analogVal = analogPin.read()
12   pwm.duty(int(analogVal/10))
13   print(analogVal)
14   sleep(1)


Related Tutorial Videos[edit]

PWM Output: connecting a servo and and LED[edit]


Power Issues[edit]

When connecting the servo to the ESP32 or ESP8266 it may not work at all, may restart at random times, or may move to a wrong angle. This is typically a power issue. The ESP-board is and the USB-output of the computer does not provide enough power. There are two fixes: adding a big capacitor (e.g. electrolytic capacitor Elko 2000 uF) or adding an external power source (e.g. USB-Power). The external power source is the better solution.

Have a look at the video for details.

Adding a Capacitor[edit]

PowerElko.JPG

Connecting an external Power Source[edit]

PowerUSB.JPG PowerUSB-module.JPG

PowerUSB-setup.JPG