Servo Ansteuerung mit Bascom

Gast #3834177
Lesenswert?

Guten Tag.

Ich habe folgendes Problem:

Ich möchte einen Servomotor(SG90) mit einem Atmega 8 ansteuern.
Der Atmega 8 bekommt von mir 8 Eingänge wo ich die Einzelnen Winkel 
einstellen möchte.
Mein Code:



$regfile = "m8def.dat"
$crystal = 8000000
Config Servos = 1 , Servo1 = Portc.5 , Reload = 9

Config Portc.5 = Output
Config Portc.4 = Input
Config Portc.3 = Input
Config Portc.2 = Input
Config Portc.1 = Input
Config Portc.0 = Input
Config Portb.5 = Input
Config Portb.4 = Input
Config Portd.0 = Input

Enable Interrupts

'Pullups
Pinc.4 = 0
Portc.4 = 0
Portc.3 = 0
Portc.2 = 0
Portc.1 = 0
Portc.0 = 0
Portb.5 = 0
Portb.4 = 0
Portd.0 = 0

Dim Pos As Word

Do
   If Pinc.3 = 1 Then Pos = 65
   If Pinc.2 = 1 Then Pos = 80
   If Pinc.1 = 1 Then Pos = 95
   If Pinc.0 = 1 Then Pos = 110
   If Pinc.5 = 1 Then Pos = 125
   If Pinc.4 = 1 Then Pos = 140


   Servo(1) = Pos
   Waitms 100


Loop



Die Eingänge werden nur einzeln auf high gesetzt, niemals 2 zusammen.

Das Problem, der Servo macht absolut was er will.

Wo liegt mein Denkfehler?
Gast #3834265
Lesenswert?

Cyblord nölte:
>Das ist BASCOM, da ist doch alles schon drin für die Servoansteuerung.
>Allerdings scheint der TE sogar dafür noch zu doof.

Richtig muss es heißen:

Das ist CYBLORD, der ist immer schon drin im Forum.
Allerdings scheint der sogar noch so doof, selbst dann noch die Schnauze 
aufzureißen, wenn er das Problem nicht im Mindesten überblickt.
#3834547
Lesenswert?

Hallo,
ich nehme auch an, dass Du einen RC-Servo meinst. Dann ist in Deinem 
Programm sicher die Taktfrequenz zu hoch. Versuche mal, den 
config-Befehl um mode zu erweitern.
Sicher bin ich nicht, weil ich bisher die PWM-Ausgänge für Servos 
benutzt habe. Da hat man mehr Experimentiermöglichkeiten, ist aber auf 
zwei Ausgänge festgelegt.
dolivo
(Firma: Vescomp) #3834601
Lesenswert?

Franz schrieb:
> If Pinc.3 = 1 Then Pos = 65
>    If Pinc.2 = 1 Then Pos = 80
>    If Pinc.1 = 1 Then Pos = 95
>    If Pinc.0 = 1 Then Pos = 110
>    If Pinc.5 = 1 Then Pos = 125
>    If Pinc.4 = 1 Then Pos = 140
>
>    Servo(1) = Pos
>    Waitms 100

 Mal abgesehen von diesem Fehler:

spess53 schrieb:
>>If Pinc.5 = 1 Then Pos = 125
>     ^^^^^^
> Erzähle mal, wie das zusammenpasst.

 Ich glaube BASCOM hat auch MODE Befehl, also:
1
  Config Servos = 1 , Mode = Servo , Servo1 = Portc.5
 sollte hinhauen.

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