Hallo zusammen, bin schon den ganzen Tag dabei, ein Multiplexservo über einen 4433 anzusteuern. Nachdem ich sämtliche Tuts wie auch Google durch habe, kann ich den Fehler nicht finden. Im Anhang ein Bild des grundsätzlichen Aufbaus. Folgende Sympthome treten auf: Beim einschalten fährt das Servo in eine Richtung (links) und nach einer Laufzeit von 2-3 sek. bricht alles zusammen (PWR LED aus). Das Servo steht nicht im Anschlag ! Ich denke mal, das es nicht am Netzteil liegt, denn es ist ein PC-Netzteil (5V / 7A). Liefert also für ein Servo genug. Folgenden code verwende ich: $regfile = "4433def.dat" $crystal = 4000000 Ddrd = &B11111111 Do Portd = &B00000000 Waitms 20 Portd = &B11111111 Waitms 1.5 Loop End Hat jemand eine Idee ? Gruß, Andre.
Hallo Andre: Verwende doch den Befehl -- Config Servos -- siehe online hilfe des Compilers- Der Transistor ist falsch beschaltet ;-) Basis ist OK. Emitter nach Masse (pfeil(der Emitter) zeigt nach aussen Kollektor nach VCC,bez. an den Servo (open Collector) der Transi ist ein NPN Typ mfg ThomasB
Hallo Thomas, in der schnelle ist mir das nicht aufgefallen im entwurf. Config Servos habe ich schon benutzt, bzw. das Beispiel welches dabei ist. Im Anhang findest Du eine überarbeitete Skizze. Diese sollte doch funktionieren, oder ? Das komische ist jetzt, das das Servo immer nur in eine Richtung läuft, anschliessend bricht alles zusammen. Ist es auch möglich, das Servo direkt über den PB0 anzusteuern ? Gibt es irgendwo Schaltpläne ? Für Hilfe wäre ich sehr dankbar. Gruß, Andre.
hallo Andre: Die Servos kannst du direkt an die Port hängen Siehe beigefügte Dateien im ZIP-Format.
Hallo Thomas,
hab das Problem gefunden. Es lag definitiv am Netzteil.
Anscheinend reichte mein 10 Jahre altes Netzteil nicht aus, um ein
popeliges Servo anzutreiben.
Nachdem ich ein Aktuelles ATX angeschlossen habe, gings.
Folgenden Code habe ich verwendet:
.include "4433def.inc"
.def sp = R16
rjmp main
main:
ldi sp,LOW(RAMEND)
out SPL,sp
ldi r16, 0b00000001
out DDRB, r16
loop:
rcall delay_20
ldi r16, 0b00000001
out PORTB, r16
rcall delay_1_5 ;delay von 1.5ms (optional delay_1 für 1ms)
ldi r16, 0b00000000
out PORTB, r16
rjmp loop
delay_1_5:
ldi R17, $09
WGLOOP5: ldi R18, $DD
WGLOOP6: dec R18
brne WGLOOP6
dec R17
brne WGLOOP5
ldi R17, $02
WGLOOP7: dec R17
brne WGLOOP7
ret
delay_20:
ldi R17, $86
WGLOOP0: ldi R18, $C6
WGLOOP1: dec R18
brne WGLOOP1
dec R17
brne WGLOOP0
nop
nop
ret
delay_1:
ldi R17, $1F
WGLOOP10: ldi R18, $2A
WGLOOP11: dec R18
brne WGLOOP11
dec R17
brne WGLOOP10
nop
ret
delay_1sek:
ldi R17, $24
WGLOOP20: ldi R18, $BC
WGLOOP21: ldi R19, $C4
WGLOOP22: dec R19
brne WGLOOP22
dec R18
brne WGLOOP21
dec R17
brne WGLOOP20
ldi R17, $01
WGLOOP23: dec R17
brne WGLOOP23
nop
ret
Gruß,
Andre.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.

