PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kleiner Kettenroboter



avus17
13.05.2012, 20:25
Hallo, ich dachte ich stelle mal mein Aktuelles Projekt vor. ich baue gerade an einem
Roboter mit RP-5 Chassi und Atmega8 Controler. Das Board ist bereits fast fertig.
Momentan funktionieren:
- 5v Stromversorgung
- Atmega8 Controler

Erweitert werden noch:
- L293D Motortreiber
- Sensoren
- eventuel Funkfernsteuerrung

Bilder werde ich vorraussichtlich am Mittwoch reinstellen, da ich Anfang der Woche weg bin.
Eine Frage hab ich noch, Am Controler ist über einen 1k Wiederstand am Controler angeschlossen, und ein Blink programm geschrieben:
$regfile = "m8def.dat"
$crystal = 1000000

Config Pind.0 = Output

Do

Portd.0 = 1
Waitms 500
Portd.0 = 0
Waitms 500

Loop

Aber die LED geht nie ganz aus, sondern leuchtet schwach u. dann heller ....
Weis jemand woran dass liegt???

Ritchie
13.05.2012, 21:00
Hi,
versuche es mal mit Waitms 1000. Geht sie dann korrekt aus ?

avus17
13.05.2012, 21:21
Nein, habs mit 1000 ausprobiert, ich suche mal nen Kurzschluss, vielleicht liegts daran.

Kampi
13.05.2012, 22:14
Kurzschluss wird es nicht sein, da die LED dann gar nicht leuchten würde.
Wie hast du die LED angeschlossen?
Ist der Takt im Programm richtig angegeben? Weil ansonsten berechnet Bascom die Werte für den Wait Befehl falsch und so kann es vorkommen das die 500ms keine 500ms sind sondern 5ms und dann blinkt die LED so schnell das du es nicht mehr richtig als blinken wahr nimmst.
1k ist auch etwas zu viel für eine LED. Du kannst da auch problemlos 470Ohm nehmen (dann leuchtet die LED heller).

avus17
14.05.2012, 07:24
Also, die LED hab ich von PD0 über einen 1k wiederstand nach Vcc Geschaltet, das teil basiert auf dem internen 1MHZ Takt, und die LED wird deutlich heller u. dunkler,
geht nur nie ganz aus. Ich hab noch mal einige bilder vom Board hochgelagen.

vohopri
15.05.2012, 21:10
Hallo,

1k ist schon in Ordnung, wenn die LED ausreichend hell leuchtet. Wozu sollte man da mehr Energie verbraten?

Möglicherweise hast du den LED Vorwiderstand nicht an die stabilisierten 5V angeschlossen, sondern an die unstabilisierte Spannung vor dem Regler.
Es kann auch sein, dass du irgendwo - so wie du schon vermutet hast - einen Schluss hast.

Auf alle Fälle: messe die Spannung dort wo der Vorwiderstand an der Versorgung liegt gegen GND und messe die Portausgangsspannung gegen GND. Das sind 2 Werte bei EIN und 2 bei AUS. Poste diese 4 Werte und ein Schaltbild. Dann kann dir geholfen werden.

grüsse,
Vohopri

avus17
16.05.2012, 12:02
Ich habe gerade gesehen, dass die LED an die Spannung vor dem regler angeschlussen wurde das werde ich gleich mal beheben

vohopri
17.05.2012, 12:27
Freut mich, dass meine Kristallkugel noch funktioniert.

avus17
29.05.2012, 19:44
Habe heute mal die motortreiber (L293D) gelötet, allerdings funktioniert nur ein "Kanal".Aber jedes Mal wenn ich Den Roboter an den Strom Anschließe,
Bewegt sich der Eine motor an nicht funktionieren kanal kurtz. Weiß jemand woran dass liegen kann??? Ich benutze folgendes Programm:
$regfile = "m8def.dat"
$crystal = 1000000

Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinc.5 = Output
Config Pinc.4 = Output
Config Pinc.3 = Output

Enable1 Alias Portb.1

Ina1 Alias Portb.2

Inb1 Alias Portb.3

Enable2 Alias Portc.5

Ina2 Alias Portc.4

Inb2 Alias Portc.3


Do

Enable1 = 1
Ina1 = 1
Ina2 = 1
Waitms 500
Ina1 = 0
Ina2 = 0
Waitms 500
Inb1 = 1
Inb2 = 1
Waitms 500
Inb1 = 0
Inb2 = 0
Waitms 500






Loop

5Volt-Junkie
29.05.2012, 21:59
Hast nur Enable1 aktiviert. Enable 2 fehlt ;)

avus17
30.05.2012, 14:59
Danke:p auf die Ide bin ich garnicht gekommen, dass ich den Enable2 vergessen habe. Jetzt funzt das endlich.
Außerdem habe ich dem Robotr eine neue festspannungsversorgung spendiert da die Alte einen Wackelkontakt hatte.

5Volt-Junkie
02.06.2012, 00:27
Ich würde Dir noch empfehlen vor dem Richtungswechsel die Enable's kurz auf LOW zu ziehen und nach dem Wechsel wieder auf High. Spart manchmal den einen oder anderen Motortreiber:)

avus17
06.06.2012, 22:29
Danke für den Tipp, dass werde ich mal ändern. Ich dachte das:

Waitms 500
Ina1 = 0
Ina2 = 0

Inb1 = 0
Inb2 = 0
Waitms 500

würde reichen.
Bald werden auch die Abstandssensoren angebaut, da bald
mein Paket von pollin kommen sollte.

Kampi
06.06.2012, 22:39
Prinzipiell reicht das auch aus. Nur bei einem Richtungswechsel kann es vorkommen das beide H-Brücken kurzeitig durchgeschaltet sind und dadurch ein hoher Strom fließt. Wenn du aber den Enable auf Low ziehst und abschaltest, schaltest du die H-Brücken ab und hast so ein wenig mehr Sicherheit.
Hoffe die Erklärung ist so Stimmig. Oder habe ich was vergessen :)?

avus17
07.06.2012, 12:33
Ok, dann ändere ich mal das Programm.

avus17
11.06.2012, 18:42
Hallo, ich habe gerade die bumper montiert, würde dieses Programm funktionieren, damit der Roboter Hindernissen ausweicht????

$regfile = "m8def.dat"
$crystal = 1000000

Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinc.5 = Output
Config Pinc.4 = Output
Config Pinc.3 = Output
Config Pind.7 = Input
Config Pinb.0 = Input

Enable1 Alias Portb.1

Ina1 Alias Portb.2

Inb1 Alias Portb.3

Enable2 Alias Portc.5

Ina2 Alias Portc.4

Inb2 Alias Portc.3

Taster1 Alias Pind.7

Taster2 Alias Pinb.0


Do

Enable1 = 1
Enable2 = 1
Ina1 = 1
Ina2 = 1

If Taster1 = 1 Then

Enable1 = 0
Enable2 = 0
Ina1 = 0
Ina2 = 0
Waitms 200

Enable1 = 1
Enable2 = 1

Inb1 = 1
Inb2 = 1
Waitms 300

Inb2 = 0
Waitms 500

Inb1 = 0
Enable1 = 0
Enable2 = 0
Waitms 200

Enable1 = 1
Enable2 = 1

End If

If Taster2 = 1 Then

Enable1 = 0
Enable2 = 0
Ina1 = 0
Ina2 = 0
Waitms 200

Enable1 = 1
Enable2 = 1

Inb1 = 1
Inb2 = 1
Waitms 300

Inb2 = 0
Waitms 500

Inb1 = 0

Enable1 = 0
Enable2 = 0
Waitms 200

Enable1 = 1
Enable2 = 1

End If








Loop

5Volt-Junkie
12.06.2012, 00:24
Packe es doch auf den µC drauf und probier es mal aus ;)

avus17
12.06.2012, 17:21
Ich wolte gerade den Atmega programieren, aber er bricht immer ab, und macht komische Geräusche.
Er wird aber noch vom programiergerät erkannt. Als Programm zu programieren benutze ich das AVR prog tool.
Weiß jemand woher dass kommt???

avus17
12.06.2012, 18:39
Es lag daran, dass die Motoren angeschlossen waren, aber der roboter bewegt sich trotzdem ganz komisch weiß demand ob da im Programm irgendwo ein fehler ist???

avus17
17.06.2012, 18:07
Hallo, ich bin jetzt schon seit stundn am programmieren, aber der Bot Finzt irgendwie nicht. Gradeausfahren geht aber soald eine If-anweisung im Programm ist,
geht es nicht mehr. Kann jemand mach über das Programm schauen??? Die Taster sind an Pinb.0 und Pind.7.

avus17
18.06.2012, 16:47
Ich habe gerade ein neues Programm mit nur einem Taster geschrieben aber es funzt immer noch nicht , kann mir jemand mal sagen warum dass nicht geht??? Ich glaube dass Problem ist irgendwo bei der If- Anweisung
$regfile = "m8def.dat"
$crystal = 1000000

Config Pinb.1 = Output ' Enable 1
Config Pinb.2 = Output ' Input 1a
Config Pinb.3 = Output ' Input 1b

Config Pinc.5 = Output ' Enable2
Config Pinc.4 = Output ' Input 2a
Config Pinc.3 = Output ' Input 2b

Config Pinb.5 = Input ' Taster input

Dim Taster As Bit ' Taster Variable

Pinb.5 = 1 ' Pull up

Do ' Wertzuweisung Variable

If Pinb.5 = 1 Then

Taster = 1

Else

Taster = 0

End If



If Taster = 1 Then

Pinb.1 = 1
Pinc.5 = 1

Pinb.2 = 1
Pinc.4 = 1

Else

Pinb.1 = 0
Pinc.5 = 0

Waitms 150

Pinb.1 = 1
Pinc.5 = 1

Pinb.3 = 1
Pinc.3 = 1

Waitms 300

Pinb.3 = 0

Waitms 200

Pinc.3 = 0

Pinb.1 = 0
Pinc.5 = 0

Waitms 100

End If
















Loop

avus17
09.07.2012, 15:25
Hallo, ich hab die Programierung immer noch nicht hingekriegt. Allerdings habe ich gerade mal ne LED angeschlossen und ein Programm geschrieben
dass sie an geht wenn man den Taster drückt:
$regfile = "m8def.dat"
$crystal = 1000000

Config Pind.0 = Output ' Enable 1

Config Pind.5 = Input ' Taster input

Pind.5 = 1 ' Pull up

Do

If Pind.5 = 0 Then

Portd.0 = 1

Else

Portd.0 = 0

End If







Loop

Wenn ich jetzt die Stromversorgung einschalte, Leuchtet die LED kurz, wierd dann immer dunkler und geht dann aus.
wenn ich den Taster drücke geht sie sofort aus. Kann mir jemand sagen woran dass liegt??? ist da irgendwo ein Fehler in der Hardware???

Kampi
09.07.2012, 15:52
Wie hast du den Taster den beschaltet?

avus17
09.07.2012, 16:07
Den Taster habe ich einfach mit dem einen Anschluss an den Controler und mit dem anderen nach GND geschaltet.

HeXPloreR
09.07.2012, 16:16
Hallo,

Du hast Deinen Pin in einem undefinierten Zustand indem Du den Taster nur am Pin und zu GND geschaltet hast. Bau doch noch einen PullUp ein - dazu einefach einen 1kOhm Widerstand mit an den Pin und dann an VCC verbinden. Dann sollte wenigstens die Hardware etwas sicherer funktionieren.


mfg

avus17
09.07.2012, 16:21
Achso, danke. ich dachte der Pullup in Bascom würde reichen. Ich löte gleich mal nen Wiederstand dazwischen.

HeXPloreR
09.07.2012, 16:27
ähm, okay Bascom ist nicht meins, wenn du einen PullUp eingeschaltet hast dann benötigst du den nicht extra noch draussen. Das wäre dann mein Fehler.

Um gottes willen ...versuche es doch mal mit ner klemme oder ähnliches.

Kampi
09.07.2012, 16:56
Hey,

schau mal hier:

http://halvar.at/elektronik/kleiner_bascom_avr_kurs/taster_entprellen/

Das muss PORTX = 1 heißen und nicht PINX = 1.

avus17
09.07.2012, 16:58
Danke, dass werde ich gleich mal ändern.

EDIT: Jetzt läuft der Bot endlich:p. Danke nochmal für den Tipp!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

avus17
20.07.2012, 13:58
Ich wollte gerade ein Relais über einen Bc 337 an den atmega anschließen, allerdings Funktioniert dass nicht, da die Basis
ja an eine Positive spannung benötigt, am Controlerpin aber eine Negative Stannung ist. kann mir demand helfen, wie ich dass lösen kann???

Ritchie
20.07.2012, 16:23
Hallo Avus,

nimm doch ein PNP Transistor ;-).

Gruss R.

P.S.: Wie wäre es mal mit einem neuen Thread.

avus17
20.07.2012, 17:02
Danke, das versuche ich mal, aber warum sind im Internet alle Schaltungen mit NPN Transistoren aufgebaut?????

Torrentula
20.07.2012, 17:06
am Controlerpin aber eine Negative Stannung ist.

Seit wann denn das? Also an deinem Pin liegen bei low 0V (GND) und bei high +5V an. Der NPN wird durchschalten wenn du deinen Pin auf high legst.

Ritchie
20.07.2012, 17:29
Hi,
prinzipell hast Du recht.

Ich zielte eher auch die Tatsache, das wenn er einen NPN nimmt,
dieser beim Einschalten sofort für eine gewisse Zeit durchsteuert, bis sein Programm den Port ansteuert.
Dies ist auch blöd, wenn man via Bootloader programmiert.

Wenn man hier eine Signalpiepser dran hat, dann hört man diesen kurz piepsen.

Nimmt man in diesem Fall einen pnp, so muss dieser mit 0 angesteuert werden.

Je nach Schaltung kann das sehr hilfreich sein. Arbeiten wird beides.

Gruss R.

Torrentula
20.07.2012, 17:39
Ich zielte eher auch die Tatsache, das wenn er einen NPN nimmt,
dieser beim Einschalten sofort für eine gewisse Zeit durchsteuert, bis sein Programm den Port ansteuert.

Sind die nicht nach dem Reset auf HiZ also haben eine hohe Impedanz, weder high noch low? Dann sollte keiner der beiden Transistoren durchschalten?

Ritchie
20.07.2012, 17:51
Ich kenne dieses Verhalten nur genau bei PIC Controller. Hier hatte mich meine erste Schaltung wirklich immer genervt, wenn ich den Download gestartet habe. (hier muss ich extra den Download anpassen).

Bei Amtel weiss ich es nicht 100%. Wenn er aber je nach Schaltung einen Pull-Up drin hat, dann würde er piepsen.

Gruss R.

avus17
20.07.2012, 18:53
Ersteinmal danke für die Antworten, ich habe dass gerade mal getestet, wenn ich den Pin über Bascom auf High schalte und eine LED anschließe
leuchtet diese nur, wenn ich das Andere anschlussbein mit dem + Pol der Spannungsquelle verbinde.

avus17
20.07.2012, 19:22
Ok, die Kabel vom Multimeter waren vertauscht, und der Transistor mitdem ich es getestet hatte kaputt. Ich habe mal einige Bilder in dieses https://www.roboternetz.de/community/album.php?albumid=72 Album geladen.
Ich füge noch einige Bilder hinzu.

Ritchie
20.07.2012, 19:28
Hi Avus,

mein Roby sah am Anfang mit dem Bumper ähnlich aus. Der ist nur einmal feste gegen die Wand gefahren, da waren die hin.
Achte also darauf, das er bei den ersten Tests nie nah an einer Wand fährt. Bei mir hat der nämlich plötzlich Vollgas gegeben. :-(

avus17
20.07.2012, 19:41
Bis jetzt haben die Bumper etliche Testfahrten überstanden, liegt wahrscheinlich daran, dass die
Gehackten Servos nicht besonders schnell sind. Außerdem möchte ich sowieso noch IR Sensoren anbringen.

Ritchie
21.07.2012, 09:11
Nun ja,

mein Roby wiegt ca. satte 5 kg und die Motoren können locker einen Küchen-Stuhl zur Seite schieben.

avus17
21.07.2012, 13:28
Ja dann kann man verstehen warum die Sensoren abbgebrochen sind:)