gesucht: Servo mit variabler Geschwindigkeit an Attiny45

Gast #4565274
Lesenswert?
• ▲
▼
Hallo Ihr Spezialisten,

ich suche für eine Modellbahnanlage die Möglichkeit, einen Servo mit 
ein-
stellbarer Geschwindigkeit an einen Attiny45/85 anzuschließen.
Einstellbare Geschwindigkeit im Sketch, der Servo muß nur schön langsam
zwischen 2 Positionen wechseln.

VarSpeedServo funktioniert mit einem Nano ganz toll, stelle ich in der
IDE einen Attiny ein (nach Anpassung der Anschlüsse) erhalte ich div.
Fehlermeldungen:

Arduino: 1.6.5 (Windows 8.1), Platine: "ATtiny85 @ 8 MHz  (internal 
oscillator; BOD disabled)"


C:\Users\Ingo\Documents\Arduino\libraries\VarSpeedServo-master\VarSpeedS 
ervo.cpp:  In function 'void __vector_3()':
C:\Users\Ingo\Documents\Arduino\libraries\VarSpeedServo-master\VarSpeedS 
ervo.cpp:160:44:  error: cannot convert 'volatile uint8_t* {aka volatile 
unsigned char*}' to 'volatile uint16_t* {aka volatile unsigned int*}' 
for argument '2' to 'void handle_interrupts(timer16_Sequence_t, volatile 
uint16_t*, volatile uint16_t*)'
   handle_interrupts(_timer1, &TCNT1, &OCR1A);
                                            ^
C:\Users\Ingo\Documents\Arduino\libraries\VarSpeedServo-master\VarSpeedS 
ervo.cpp:  In function 'void initISR(timer16_Sequence_t)':
C:\Users\Ingo\Documents\Arduino\libraries\VarSpeedServo-master\VarSpeedS 
ervo.cpp:206:5:  error: 'TCCR1A' was not declared in this scope
     TCCR1A = 0;             // normal counting mode
     ^
C:\Users\Ingo\Documents\Arduino\libraries\VarSpeedServo-master\VarSpeedS 
ervo.cpp:207:5:  error: 'TCCR1B' was not declared in this scope
     TCCR1B = _BV(CS11);     // set prescaler of 8
     ^
C:\Users\Ingo\Documents\Arduino\libraries\VarSpeedServo-master\VarSpeedS 
ervo.cpp:214:5:  error: 'TIFR1' was not declared in this scope
     TIFR1 |= _BV(OCF1A);     // clear any pending interrupts;
     ^
C:\Users\Ingo\Documents\Arduino\libraries\VarSpeedServo-master\VarSpeedS 
ervo.cpp:215:5:  error: 'TIMSK1' was not declared in this scope
     TIMSK1 |=  _BV(OCIE1A) ; // enable the output compare interrupt
     ^
Fehler beim Kompilieren.


Vermutlich nicht Attiny-tauglich ???


SoftwareServo.h bietet anscheinend nicht die Möglichkeit, die Servo-
Geschwindigkeit zu beeinflussen.

Mit meinen begrenztem Wissen komme ich nicht weiter, es wäre nett, wenn
jemand einen Tip hätte.

schon mal Danke

Grüße Ingo
(Firma: matzetronics) #4565279
Lesenswert?
• ▲
▼
1. Die Register und Interrupt Vektoren haben beim Tiny andere Namen als 
beim Mega.
2. Jede Servo Library kann man so ansteuern, das sich das Servo nur 
langsam bewegt, indem man auch Zwischenschritte zwischen den Endpunkten 
anfährt.
3. Dein Programm fehlt im Posting und ohne dieses kann man nur im Nebel 
stochern.
Gast #4565297
Lesenswert?
• ▲
▼
Hi

>stelle ich in der
>IDE einen Attiny ein (nach Anpassung der Anschlüsse) erhalte ich div.
>Fehlermeldungen:

Anscheinend den falschen:

TCCR1B -> hat der Attiny45 nicht
TIFR1  -> TIFR
TIMSK1 -> TIMSK

MfG spess
Gast #4565316
Lesenswert?
• ▲
▼
Sorry, an den Sketch habe ich nicht gedacht. Ich verwende den Sketch
Knob aus der Original-Servo-Librarie, eben geringfügig angepaßt.

Nach dieser Methode habe ich schon ca 50 Weichensteuerungen mit Servos
gebaut, jedoch alle mit dem Pro Mini.

Anzuschauen u.a. hier:

http://1drv.ms/1NDhSab

(inkl. Sketch u. Verschaltung)

bitte macht es nicht zu kompliziert, das übersehe ich mit meinem Halb-
wissen und meinen 61 Jahren nicht mehr !

Grüße Ingo
#4565343
Lesenswert?
• ▲
▼
Servos benötigen ein PWM-Moduliertes Signal (typ. 5..15% @ 100Hz) um den 
Winkel einzustellen. Wenn du eine bestimmte PWM (zb. 8%) einstellt wird 
der Servo so schnell wie möglich versuchen den passenden Winkel 
einstellen.
Wenn du langsam drehen willst, musst du ausgehend von der aktuellen 
Lage, den neuen Winkel durch langsames ändern der PWM-Zeit anfahren 
(z.b. alle 100ms den PWM-Wert um 0.5% erhöhen bis der Endwert erreicht 
wurde).
Je nach Auflösung des Timers ruckelt das dann.
Gast #4565349
Lesenswert?
• ▲
▼
Arduino oder nicht, der Tiny45 hat sowieso nur zwei 8 Bit Timer.
Direkter geeignet wäre einer mit 16 Bit Timer, etwa Tiny44.

Wobei ich jetzt aber nicht andeuten will, dass das mit dem Tiny45 gar 
nicht möglich wäre. :-)
Gast #4565604
Lesenswert?
• ▲
▼
erst mal Danke für die Hilfe.

Habe gerade bemerkt, daß mein OneDrive-Link nicht mehr funktioniert.

https://onedrive.live.com/redir?resid=89096C07434A4A81!14000&authkey=!AKw8Yn7EF_CVJus&ithint=folder%2c

Kurz-Links scheint es nicht mehr zu geben.

Eure gutgemeinten Ratschläge überfordern mein Wissen jedoch bei weitem,
werde mich wohl doch für einen Pro Mini entscheiden, davon hab ich noch
ein paar. Für einen Servo....Grrrrr

Grüße Ingo
Gast #4565640
Lesenswert?
• ▲
▼
Die Pro Minis vom FC haben als 10er-Pack 18,27,-€ gekostet, also nicht
die Welt. Wenn ich dagegen meine (und Eure) Zeit setze, die wir schon
zugesetzt haben.......

Nochmals Dank für Eure Hilfe !!!

Grüße Ingo

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren