Servotester mit Tiny85

Um Modellbauservos schnell und einfach auf Funktion prüfen zu können, habe ich mir einen einfachen Servotester mit einem Tiny85 gebastelt. Der Aufbau ist ganz einfach und besteht im wesentlichen aus dem Tiny85, einem 5V Festspannungsregler und einem  Poti. Über das Poti kann die Servoposition eingestellt werden, die Ausgangsspannung des Spannungsteilers wird vom ADC3 des Tiny 85 ausgewertet und daraus die Sollposition errechnet. Der Servo wird über die 5V des LM7805 mitversorgt. Der 1 kOhm Widerstand in der Signalleitung des Servos dient nur zum Schutz des Mikrocontrollers.

EDIT: Hier der aktuelle Schaltplan. Hatte erst den Schaltplan einer Vorgängerversion online, in dem vor und nach dem Poti je ein 10 k Widerstand vorgesehen war. Allerdings funktionierte dieser Schaltplan nicht mit dem unten angegebenen Code!

Der Bascom-Code:

$regfile = "attiny85.dat"
$crystal = 1000000
$hwstack = 40
$swstack = 40
$framesize = 40

Dim W As Word

Dim Channel As Byte
Channel = 3

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Servos = 1 , Servo1 = Portb.2 , Reload = 10
Config Portb.2 = Output
Enable Interrupts

Do

Start Adc
W = Getadc(3)
Stop Adc

If W > 1000 Then W = 1000
W = W /  10                                                'hier muss evtl. für andere Servos
W = W + 100                                             'etwas angepasst werden.
Servo(1) = W

Loop

End

Bei der Berechnung der Werte für die Servoposition (Servo(1)) muss eventuell ein bischen experimentiert werden, da diese für einige Servotypen verschieden sind. Normalerweise ist der linke Anschlag der Wert 100, Mittelstellung der Wert 150 und rechter Anschlag der Wert 200. In der Praxis habe ich aber immer andere Werte dafür gefunden.

 

 

Servotester mit Mega8

Für genauere Servosignale habe ich jetzt noch einen Servotester mit einem Mega8 aufgebaut. Bei diesem verwende ich den integrierten 16-bit Timer, um das PWM-Signal für den Servo zu erzeugen. Auch hier kann die Position mit einem Poti eingestellt werden. Theoretisch kommt man mit diesem Timer auf eine Auflösung von 2000 Schritten für eine Pulslänge von 1 - 2 ms, allerdings hat der ADC nur eine Auflösung von 10 bit (also 1024 Schritten), aber das sollte wohl auch noch genug sein.

Die Grundschaltung des Mega8 Servotesters. An ADC0 wird die Analogspannung eingelesen, an PB1 wird das PWM-Signal für den Servo ausgegeben.