Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum 
Sie können sich hier anmelden
Dieses Thema hat 8 Antworten
und wurde 1.920 mal aufgerufen
 Projekte
Wirthi Offline



Beiträge: 221

12.12.2011 22:17
Kleiner Tester in Bascom Antworten

Einen schönen Abend miteinander,

wie schon in Diezel`s Thread angesprochen habe ich mich ebenfalls als Anfängerprojekt an einem Motor- und Servotester probiert. Ich habe den File ebenfalls erfolgreich kompiliert aber funktionieren tut es leider trotzdem nicht.

Ich habe leider auch noch keine Idee wie ich die H-Brücke bzw. die softwareseitige Ansteuerung realisieren kann. Wie kann ich das denn realisieren?

Vielleicht wären ja die Bascom-Experten so nett mal über mein kleines Projekt zu schauen? Vielleicht habt ihr ja ein paar Tipps für mich, was ich ändern muss oder ob ich doch besser gleich alles neu machen sollte...

Ich fände es wirklich nett wenn ihr mir helfen könntet. Wie gesagt, das ist mein erstes Projet in Bascom und ich muss mir das halt alles erstmal beibringen.

Viele Grüßewavey5b15d von smilies-world.de
Alex

Dateianlage:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
Tester1.bas.txt

diezel Offline



Beiträge: 709

12.12.2011 22:52
#2 RE: Kleiner Tester in Bascom Antworten

Hi,

aaaalso, zum Servo-Teil:
die Konfiguration sollte passen, jedoch dürfen die Werte, die das Servo anfahren soll, nur in einem bestimmten Rahmen liegen. Bei mir haben sich Werte zwischen 40 und 110 als Stabil gezeigt. Bei Dir sind Werte zwischen 0 und 204 möglich.

Dann zur PWM:
so eine H-Brücke wird mittels zweier Leitungen angesteuert, jeweils eine pro Drehrichtung. Die Konfiguration sieht dann so aus:

1
2
3
 
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1024
Compare1a = 255
Compare1b = 255
 



Du mußt das Programm so auslegen, daß z.B. bei Vollgas vorwärts Compare1a = 0 und Compare1b = 255 ist. Somit steht am Pin OC1A ein Dauersignal an, OC1B ist dann 0.
Für Zwischenwerte und die andere Drehrichtung entsprechend. Will Dir jetzt nicht alles so hinschreiben. Sollst, und willst bestimmt auch, etwas dabei lernen.

Hier hat Martin Jost mal eine H-Brücke vorgestellt:
topic-threaded.php?board=78514&forum=48&threaded=1&id=1453&message=21306


Gruß
Gerhard


Wirthi Offline



Beiträge: 221

13.12.2011 00:56
#3 RE: Kleiner Tester in Bascom Antworten

Hallo Gerhard,

Vielen Dank für deine Mühe. Du hast recht, alles vorkauen bringt nichts, davon lernt man nicht. Ich habe mir nun einige Gedanken zu dem Thema gemacht.

Ich würde sagen, dass ich erst einmal aus dem ADC-Wert die gewünschte Richtung ermitteln muss. Das heißt alles was beispielsweise im Bereich von 0-254 liegt ließe den Motor nach rechts drehen, von 256-510 nach links. Bei einem Wert von 255 würde sich nichts tun. Kann ich dann den Wert direkt auf einen Ausgang legen? Beispielsweise 150 auf OC1A?

Viele Grüße
Alex


diezel Offline



Beiträge: 709

13.12.2011 11:43
#4 RE: Kleiner Tester in Bascom Antworten

Hi,

wie schon oben geschrieben: Du brauchst zwei Ausgänge mit PWM zur Steuerung einer H-Brücke. Nicht nur einen.
Da mußt Du dich noch schlau machen. Hier wären noch Schaltungsbeispiele, aufgebaut aus einzelnen Transistoren:
http://www.mikromodellbauwelt.de/html/fahrtregler.html
Versuch mal zu verstehen, was in einer H-Brücke passiert und wie sie geschaltet wird. Google wird dir bestimmt helfen.
Wenn das sitzt geht´s gleich viel leichter :-)


Gruß
Gerhard


Wirthi Offline



Beiträge: 221

17.12.2011 00:04
#5 RE: Kleiner Tester in Bascom Antworten

Hallo miteinander,

Vielen Dank für deinen Tipp. Ich habe mich mit dem Thema H-Brücke beschäftigt, es geht auf jeden Fall leichter wenn man versteht, was man machen will:)

Ich habe mal wieder etwas programmiert, allerdings bekomme ich Fehler beim Compilieren. Ich habe bereits mehrfach versucht die Fehler zu beheben, allerdings leider ohne Erfolg. Ich hänge euch die Datei mal wieder an, es wäre nett wenn ihr einen kurzen Blick drauf werfen könntet und mir sagen würdet, was ich falsch gemacht habe. Mir kommt auf jeden Fall die If-Verschachtelung komisch vor.

Ich habe über einen Beitrag in diesem Forum einen Verweis auf diesen Beitrag gefunden:

http://www.roboternetz.de/community/thre...Bridge-mosfet-2*N-2*P?p=261210#post261210

Ich habe auch noch eine solche H-Brücke bei mir gefunden, diese möchte ich also gleich verwenden.

Es wäre nett, wenn ihr noch einmal über mein kleines Programm sehen könntet und mir sagen könntet was ich falsch gemacht habe

Viele Grüße
Alex

Dateianlage:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
Tester1_1.bas.txt

DesignDevil Offline




Beiträge: 17

17.12.2011 00:25
#6 RE: Kleiner Tester in Bascom Antworten

Mir fallen 2 Fehler auf.

1. Wen Du einen Port als Eingang definierst mußt Du PIN statt PORT angeben:

also statt
Config Portc.0 = Input 'PC0 Input ADC1
Config Portc.1 = Input 'PC1 Input ADC2
Config Portd.3 = Input 'PD3 Input LED

dieses:
Config PINc.0 = Input 'PC0 Input ADC1
Config PINC.1 = Input 'PC1 Input ADC2
Config PINd.3 = Input 'PD3 Input LED

2. Die IF Verschachtelung hat einen Syntaktischen Fehler:

If Analogwert_0 < 255 Then Analogwert_0 = Oc1a
Elseif Analogwert_0 > 255 Then Analogwert_0 = Oc1b
Elseif Analogwert_0 > 510 Then Analogwert_?????????? = 510
End If

sollte wohl so aussehen:

If Analogwert_0 < 255 Then Analogwert_0 = Oc1a
Elseif Analogwert_0 > 255 Then Analogwert_0 = Oc1b
Elseif Analogwert_0 > 510 Then Analogwert_0 = 510
End If

Hoffe das hilft.


diezel Offline



Beiträge: 709

17.12.2011 00:43
#7 RE: Kleiner Tester in Bascom Antworten

Hi,

ich habs grad mal Compilieren lassen, folgende Fehler kommen:
- Zeile 43 gefällt ihm "Oc1a" nicht, schreib mal "Compare1a", selbes gilt für "0c1b" => "Compare1b"
- die If-Elseif-Abfragen dürfen so nicht geschrieben werden. Einzeilig geht´s nur bei bei einer einfachen If-Abfrage

1
2
3
4
5
6
7
 
If Analogwert_0 < 255 Then 
Compare1a = Analogwert_0
Elseif Analogwert_0 > 255 Then
Compare1b = Analogwert_0
Elseif Analogwert_0 > 510 Then
Analogwert_0 = 510
End If
 


- dann noch wie von DesignDevil schon geschrieben, die fehlende "0" bei "Analogwert_0" ergänzen

Jetzt wirds fehlerfrei compiliert. Du bist wieder dran.


Gruß
Gerhard

Edit: Hab grad noch die Zuweisungen "Analogwert_0 = Oc1a" usw. nach "Compare1a = Analogwert_0" umgedreht


Wirthi Offline



Beiträge: 221

18.12.2011 23:22
#8 RE: Kleiner Tester in Bascom Antworten

Hi,

danke für eure Tipps. Ich habe jetzt die Textzeilen eingearbeitet. Des weiteren habe ich den Output-Pin für die LED geändert, da diese auf dem OC1A lag.

Allerdings funktioniert die Schaltung leider nicht wie gewünscht. Die LED blinkt, obwohl der dazugehörige Schalter nicht aktiviert wurde. Wird der Pin der die LED ein/ausschalten soll auf 1 geschaltet leutet diese konstant, allerdings flackert sie teilweise. Ich vermute, dass sie nun einfach nur wesentlich schneller flackert. Das Servo tut keinen Mucks und reagiert auch nicht auf den Poti. Der Motor ruckt immer wieder an, die Dauer des Anruckens wird über den Poti gesteuert. Ich habe auch die von mir zuvor beschriebene H-Brücke in meine Schaltung eingebaut. Allerdings scheint diese auch nicht zu funktionieren, der Motor ändert nicht seine Drehrichtung, doch das sollte sie von der Programmierung her eigentlich tun.

Habt ihr eine Idee woran das liegen kann?

Viele Grüße
Alex

Dateianlage:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
Tester1_2.bas.txt

diezel Offline



Beiträge: 709

19.12.2011 00:03
#9 RE: Kleiner Tester in Bascom Antworten

Hallo,

also ich halt mich mal immer noch ein bischen zurück, willst ja was lernen.

1. die Stackwerte fehlen noch

2. zum Servo: der ADC liefert Werte zw. 0 und 1023.
Du teilst diese durch 5, bleiben also noch 0 bis 204.
Wie ich oben schon beschrieben hab, werden nicht alle Werte vom Servo als gültig erkannt werden. Aber in einem bestimmten Bereich müsste es eigentlich funktionieren.

3. Die PWM für die H-Brücke
Du konfigurierst Timer1 für die PWM, schreibst aber "Enable Timer2" und "Start Timer2"

4. Die Verrechnung von Analogwert_0
der ADC liefert von 0 bis 1023, du teilst durch 4, bleiben noch 0 bis 255. Deine If-Abfrage will aber 0 bis 511.
Dann mußt Du noch, wenn z.B. "Compare1a = Analogwert_0" gesetzt wird, Compare1b auf 255 setzen.

5. dein Schalter für die LED
dort glaube ich, daß ein Pull-Up oder -Down nicht schaden könnte. Je nachdem, wogegen der Schalter zieht.
Dein Hardware-Aufbau wäre auch noch interessant. Das Flackern der LED könnte an einer schlechten Spannungsversorgung oder fehlendem Kondensator liegen.


Gruß
Gerhard


 Sprung  

disconnected Mikromodell-Chat Mitglieder Online 3
Xobor Xobor Community Software
Datenschutz