PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : autonomes fernlenkauto (katzenschreck)



robocat
26.07.2006, 16:50
hi ihr, vielleicht mag mir jemand weiterhelfen.

ich habe ein kleines fernlenkauto (Dickie Fighter, max 6V), in dem ein "SCRX2G" 2 motoren-h-bridges ansteuert. das heisst, die ausgänge des SC (forward, back, left, right) gehen auf high, wenn ich über die fernbedienung steuere, und die motoren (da lenkt ein motor) springen an.

mein gedanke war nun, einen controller "dazwischenzuhängen" der alle einkommenden signale weiterleitet als wäre er nicht da, und wenn nichts kommt ein fahr-programm abspult.

nun hat ein atmega8 nur 3 pwm ausgänge.. bräuchte ich da 4? oder genügt es, einen (4) pin(s) auf high zu schalten?

ich muss hinzufügen dass ich ein µC newbie bin.. meine erste atmega bestellung wird stattfinden, sobald ich weiß, ob mein "projekt" machbar ist.

P.S. hallo forum!!

gruesse, die katz

ähM_Key
27.07.2006, 00:19
Deutsch bitte!

Soweit ich das verstehen konnte...brauchts du 2 Motortreiber für 2 Motoren.
Ein Motortreiber will dann ein PWM Signal und ein Richtungssignal haben.
Sicher, dass da kein Servo zum lenken drin ist?

MK

Reeper
27.07.2006, 00:30
Hallo,

wieso denn 2 Motortreiber für 2 Motoren?
Einfach die benötigten Pins zum vorwaerts oder rückwaerts fahren auf high setzen und ein PWM erzeugen (je Motor).

Du kannst natürlich auch ein normalen Port auf high setzen und diesen als "PWM-Eingang" nutzen, somit brauchst du zum benutzen des Motortreibers kein PWM, hast aber keine Kontrolle über die Taktung und somit am Ende auch keine Geschwindigkeits- bzw. Beschleunigungskontrolle. Nur on bzw. off Modus.

Also du willst einen autonomen Bot mit der Möglichkeit, sofort durch betätigen der Fernsteuerung manuell einzugreifen?

ähM_Key
27.07.2006, 09:35
Ja, sorry, es war dann doch zu spät...natürlich kann er den vorhanden Motortreiber nutzen..

robocat
27.07.2006, 12:12
hallo ihr,


Also du willst einen autonomen Bot mit der Möglichkeit, sofort durch betätigen der Fernsteuerung manuell einzugreifen?

ja genau, also "nicht-ganz-autonom" für den anfang. es wäre schön, die RC-funktionalität nicht zu verlieren, um mein haustier weiterhin "manuell" ärgern zu können.

empfänger und steuerung sind auf einer kleinen platine (aber kein SMD) untergebracht. (ich wollte ein bild machen, aber die cam wollte nicht.)

und es lenkt tatsächlich ein motor(!).

von digital proportional kann sowieso keine rede sein, das ding fährt oder fährt nicht, es gibt keine PWM soweit ich es auf dem oszi gesehen habe und auch keine AM.

die 4 pins die zu den motorbrücken führen, haben im geschalteten zustand gegen masse eine spannung von etwa 3.5V, der stromfluss ist minimal. das sollte ein atmega8 auch können, 4 schaltbare pins finden sich sicher.

was mich interessieren würde: kann man nicht softwareseitig ein PWM-Signal erzeugen, mit "PIN1=1, NOP,NOP,PIN1=0,NOP"?
sicherlich nicht, aber warum?

nun frage ich mich 2erlei:

- mit welcher spannung versorge ich den atmel? nahe über den 3.5V, die ich schalten möchte, würde ich sagen. oder einen 5V regler davor?

- laut datenblatt kann der atmega8 seine ausgänge auch lesen. wie darf ich mir das vorstellen? bekommt der mit, dass sich auf dem forward-pin nix mehr tut..(weil ich die fernbedienung ausgemacht habe)..? dann bräuchte ich nur 4 leitungen anlöten, ohne irgendetwas aufzudröseln..

danke schonmal für die hilfe.

gruesse, die katz

Reeper
27.07.2006, 13:32
Hallo robocat ,

kannst das ganze ja trivial lösen O:)
Da das RC-Auto eh nur voll vorwaerts oder voll rückwaerts fährt (wie du schrieben hast), dann kannst dir die PWM-Ausgänge sparen und nur ein low oder high setzen.
Dem Bot dann befehlen, was er tun soll.

Danach von dem RC-Empfänger die Ausgänge freilegen (eigentlich braucht man viele Teile von dem Empfänger nicht mehr, da er ja auch eine H-Brücke für die Motoren beinhaltet).
Diese Ausgänge auf einen Transistor (als Basis).
Dieser Transistor schaltet dann zB. einen kleinen Schaltkreis auf Masse (der mit einem I/O vom Atmel verbunden ist) (Widerstand und evtl. Pullup beachten).
Nun noch beide Massen (Atmel und RC-Empfänger) verbinden und fertig.
So ist das ganze sicher "getrennt".

Spannungsversorgung:
Da musst du mal in das Datenblatt schauen (gibt mittlerweile zig untersch. min. Angaben je nach Modell).
Wenn dein Atmel 5V braucht und du für den Empfänger 6V im Auto hast, würde ich einen Spannungsregler benutzen (bei diesen geringen Anforderungen an den Atmel benötigt man nun nicht unbedingt eine exakt gleichbleibende Spannung).
Als Notlösung würden best, auch einige Dioden und ein 100nF (und ein Elko) reichen.

robocat
27.07.2006, 14:46
also empfänger und h-bridges wollte ich intakt lassen. ich wollte nur, dass mein µC überprüft, ob steuersignale an den pins [forward, back, left, right] anliegen.. und wenn nicht soll er den pin gelegentlich auf 3.5V bringen, also selbst diese steuersignale erzeugen.

ich denke es ist den versuch wert, und werde mir eine handvoll atmega8 bestellen.. o.O

anbei ein bild des "dickie fighters"

gruesse, die katz

robocat
10.08.2006, 16:42
hallo,

inzwischen sind meine bauteile angekommen und ich habe mir den programmer und eine grundschaltung mit atmega8 aufgelötet.
es funktioniert auch alles und ich habe nicht nur eine led zum blinken, sondern auch das dickie zum fahren bekommen.

hier ein großes dankeschön an das RN und alle forum-schreiber!!
ohne euch hätte ich das nie hinbekommen.. :)

allerdings kann ich den controller nur programmieren, wenn ich den reset pin mit masse verbinde. wenn ich das nicht tue, "flattert" der reset. als pullup ist da ein 1K widerstand gegen +5V im schaltplan, aber auch mit einem 10K funktioniert es nicht. ponyprog meldet immer "device missing or unknown device (24)". wenn ich trotzdem schreibe, bekomme ich ein "write failed".

mein programmer ist so aufgebaut, wie der in der RN-wiki, mit 74HCT244.

weiß jemand woran es liegen könnte?

gruesse, die katz

Reeper
10.08.2006, 23:35
Hallo,
herzlichen Glückwunsch =D>

Also du kannst nur programmieren, wenn du Reset runterziehst?
Dann mach ein Schiebeschalter dran und betätige diesen, bevor du schreibst O:)

Ich habe mir ein ISP Dongle nach dem unten stehendem Schaltplan gebastelt und habe die Reset-Leitung mit einem 10k Pullup gegen VCC gezogen.
Ist dein Dongle genauso oder nach einem anderen Prinzip (gibt glaube ich mehrere). Du kannst ja mal deine Schaltung posten.

Das war mein "Leit-Blatt":

robocat
11.08.2006, 13:38
hm, äh, *schäm* vielleicht muss man den hct244 auch bissl mit saft versorgen.. :oops:
habe dem pin 20 nun seine 5V spendiert (vorher hing er in der luft), und schon klappt das schreiben, reset geht nun brav auf low :D
hätte mich auch gewurmt, da nen schalter hinzuimprovisieren.
danke für den schaltplan, ist identisch mit meinem.

damit ihr etwas zu gucken habt, habe ich bilder vom avr isp dongle (hängt am parallelport und an einem wannenstecker) und vom atmega angehängt, letzterer ohne quarz und mit einer diode aufgebaut, um unter 5,5V zu kommen (das dickie hat ja 6V max).

nun fehlen meinem dickie katzenschreck nur noch einige sensoren, damit es nicht so stumpfdoof gegen die wände fährt. ich dachte da an infrarot dioden und passende sensoren. US kommt nicht in frage, da für dieses kleine projekt zu teuer. zuerst dachte ich auch an eine superhelle led und einige phototransistoren,..
hat jemand erfahrung, welche reichweiten damit machbar sind (led oder ir-led)? wäre für ein paar anhaltspunkte sehr dankbar..

ideal wäre natürlich auch ein katzensensor, um meinen stubentiger gezielt nerven zu können. aber sowas scheint reichelt nicht im sortiment zu haben.

ideen und vorschläge sind willkommen, schreibt ruhig eure meinung :)

gruesse, die katz

MST_NRW
11.08.2006, 13:48
Also damit Dein Stubentiger-Jäger nicht stumpf vor die Wände fährt, kann
ich Dir zu dem den IS471 raten.

Kleiner Link dazu:

https://www.roboternetz.de/wissen/index.php/Sensorarten#Distanzsensor_IS471F

Die Geschichte kostet bei http://shop.embedit.de/ im Set mit einer LED €2,29

robocat
11.08.2006, 22:13
preislich ist das wohl nicht mehr zu unterbieten, ich befürchte nur, dass das auto zu schnell sein könnte, um rechtzeitig ein hindernis zu erkennen und zu bremsen.
allerdings heisst es in der wiki, man könnte die reichweite mit einer stärkeren ir-diode erhöhen. ich werde mich da morgen mal durch das datenblatt kämpfen.

danke für den link!

robocat
03.09.2006, 17:00
mauuuuuuuuuuuuuuuuuuuu!!!! :( :(

um euch mal auf dem laufenden zu halten:
das dickie ist mir verreckt.

wie das geschehen ist, weiß ich auch nicht, aber ich dödel habe das ding mal versehentlich mit >8V gepowered (ans netzteilpoti hingestubst, erst zu spät gemerkt... gehts noch dümmer!? *jammer*

dabei war ich schon so weit! es fuhr wie der atmega wollte, und ich war gerade dabei, der ir-diode ihre 80mA zu verschaffen (transistor), erste tests damit waren sogar schon erfolgreich - ich konnte ein hindernis in 10cm abstand detektieren.

und nun fliesst soviel strom, wie mein netzteil hergibt (strombegrenzung bis max. 1,2A), und funksignale werden auch nicht mehr erkannt. irgendwas ist kurzgeschlossen, ich habe den fehler aber noch nicht gefunden.

nicht extra zu erwähnen, dass mich das wurmt ohne ende.. ](*,)

ich denke, ich werde mal den "superchip" auslöten, und schauen ob die motorbrücken (sind ja 2) noch ihren dienst tun. vielleicht kann ich wenigstens die weiterverwenden.

gruesse von eurer gefrusteten katze

Reeper
03.09.2006, 21:04
Ooh, ich drücke dir die Daumen, gib nicht auf [-o<

Meinen Rabbie Twin habe ich auch fast geschrottet. Es kam sogar Qualm raus, weiß bis heute nicht warum, denn in diesem Gebiet wo es rauchte, funktioniert alles, aber dafür war das LCD, Kfz-Abstandswarner, DS1820 und ein Atmel tot ](*,)
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=14991&highlight=

Also:
Nur nicht aufgeben, es geht weiter =P~

Gruß
Stefan

scales
03.09.2006, 22:29
genau das gleiche ist mir auch passiert,
hab den 6V Motor von meinem RC-Car direkt an 12V geschlossen

erst hat der Motor meine ganze schöne Konstruktion gegen die Wand gesetzt und dann nur noch komisch gerattert,
ich weis nicht wieso aber nach ner Zeit ging der Motor wieder einigermaßen,
im Rückwärtsgang ist er jetzt zwar etwas langsamer, aber hauptsache er tut überhaupt noch


dumm ist dass gute RC-Cars nicht ganz billig sind,
aber guck mal bei Pollin vor einiger Zeit hatten die da noch ein günstiges

oder Ebay, da werden sogar oft nur die Unterteile verkauft

robocat
03.09.2006, 22:54
dieses forum ist echt cool O:)
ich kenne andere foren, wo man mir schon ein dutzend "mein gott bist du blöd" oder "guck google" oder sowas an den kopf geworfen hätte.

danke für eure tips.
thx @ reeper, ich werde nicht aufgeben, wir katzen versuchen alles ein paarmal, bevor man aufgibt. dein thread ist interessant, hab ihn heute aber nimmer ganz gelesen. mach ich bald.

thx @ scales, freut mich (na gut das klingt blöd) dass anderen auch mal was schiefgeht.

bevor ich ein neues besorge, werde ich versuchen zu retten, was ich kann (die h-bridges würden notfalls genügen, evtl sind die noch intakt). ein gutes RC-car muss es eh nicht sein, dieses dickie ist echt billig. für die wohnung und meine atmaga-forderungen reicht ein ganz billiges.

ich berichte euch bald, wie es weitergeht.

gruesse, eure katze

robocat
26.09.2006, 13:48
katzenschreck continued..

wie es das schicksal so will, war natürlich alles mögliche kaputt an meinem fernlenkauto: 2 transistoren der motorbrücke hatten die 8V attacke nicht überstanden, und das empfangsteil (evtl. oben erwähnter superchip) hatten bleibenden schaden erlitten.

auf fernsteuerung musste also verzichtet werden, aber es gelang mir nach einigen tagen planlosen herumlötens, die motorbrücke durch austausch 2er transistoren (standard-typen) wieder in gang zu bekommen. der atmega hatte wie durch ein wunder alles schadlos überstanden. echt robust die dinger.

nun wurde also eine IR-diode über einen weiteren transistor (samt vorwiderstand) am OC1A angeschlossen, die mittels timer mit 32kHz getaktet wird. dazu kam ein "TSOP-1733" IR-empfänger, dessen ausgang an ADC0 hängt.

tests ergaben völlig unbrauchbare werte, bis ich, wie im datenblatt erwähnt, einen 4,7µF elko parallel zur versorgung hinzufügte.

sensor und diode wurden nun mehr schlecht als recht an der front des fahrzeugs befestigt, und nach einigen bemühungen war es soweit:

wenn man eine hand vor das fahrzeug hielt, kehrte es die fahrtrichtung für 1 sekunde um, und das dickie sollte damit theoretisch hindernissen ausweichen können. genau so war es ja gedacht.

praktisch ergab sich leider, dass das ding viel zu schnell ist, und erst einmal voll in das hindernis reindonnert, bevor es merkt, dass es wo angestossen ist.

damit nicht genug, reflektieren schwarze flächen (meine möbel sind nun mal schwarz) das IR signal nicht, sondern absorbieren es. das heisst das dickie kracht gegen die wand, bemerkt nichts davon, und versucht weiterhin vorwärts zu fahren.

man kann also sagen, dass dieses projekt theoretisch prima funktioniert hat, in der praxis aber völlig untauglich ist. (ich denke nicht daran, alle meine möbelstücke in bodennähe mit reflektorstreifen zu versehen.)

vielleicht hat jmd. eine idee, wie man diese probleme lösen kann? ich dachte als nächstes an "bumper" (also schalter, die beim "wo dagegenbrettern" ausgelöst werden) oder daran, den motorstrom zu messen (motorstrom hoch -> hindernis -> rückwärts fahren).

sonderlich elegant ist das zwar nicht, aber meine anforderung ist ja nur, dass das fahrzeug weiterfährt.

bevor jetzt jmd "ultraschall" ruft: das mag meine katze nicht.

hier noch der ASM code:

.NOLIST
.INCLUDE <m8def.inc>
.LIST

; MCU Takt für diverse Berechnungen festlegen
.equ tosc = 1000000

; Ausgabefreq festlegen
.equ fout = 33000

; Timer 1 Ladewert
.equ ladewert = (tosc / (2 * fout)) - 1

.def temp = r20
.def Ergebnis1 = r21
.def Ergebnis2 = r22

.CSEG
.org 0

; Interupt Vektoren
rjmp init ; Reset Handler
reti ; IRQ0 Handler
reti ; IRQ1 Handler
reti ; Timer2 Compare Handler
reti ; Timer2 Overflow Handler
reti ; Timer1 Capture Handler
reti ; Timer1 CompareA Handler
reti ; Timer1 CompareB Handler
reti ; Timer1 Overflow Handler
reti ; Timer0 Overflow Handler
reti ; SPI Transfer Complete Handler
reti ; USART RX Complete Handler
reti ; UDR Empty Handler
reti ; USART TX Complete Handler
rjmp ADCfertig ; ADC Conversion Complete Handler
reti ; EEPROM Ready Handler
reti ; Analog Comparator Handler
reti ; Two-wire Serial Interface Handler
reti ; Store Program Memory Ready Handler

init:
;Stackpointer
ldi temp, LOW(RAMEND)
out SPL, temp
ldi temp, HIGH(RAMEND)
out SPH, temp
;Aus/Eingänge
clr temp
out DDRC, temp ; Eingang
ser temp
out DDRB, temp ; Ausgang
out DDRD, temp ; Ausgang

ldi r17, (1<<COM1A0) ; Timer 1 konfigurieren (Mode 4 -> CTC)
ldi r16, (1<<WGM12)|(1<<CS10)
out TCCR1A, r17
out TCCR1B, r16

ldi r16, high(ladewert)
out OCR1AH,r16
ldi r16, low(ladewert)
out OCR1AL,r16

;Interrupts aktivieren
sei ; Generelle Interruptfreigabe

Main:
ldi temp, (1<<ADLAR) ; Vref=5V ; Linksbündig in Register geschrieben (ADLAR=1) ; ADC Eingang = ADC0 (MUX4-0...00000)
out ADMUX, temp
ldi temp, (1<<ADEN) | (1<<ADSC) | (1<<ADIE) | (5<<ADPS0)
out ADCSRA, temp

rcall Warten
mov Ergebnis1, temp

cpi Ergebnis1, 64
brlo backward

; forward, pd 5+7

ldi r24, 160
out PORTD, r24
ldi r24, 0
out PORTB, r24

; delay

ldi r17, 0x09 ; delay loop, 1Hz
WGLOOP0:
ldi r18, 0xBC
WGLOOP1:
ldi r19, 0xC4
WGLOOP2:
dec r19
brne WGLOOP2
dec r18
brne WGLOOP1
dec r17
brne WGLOOP0
nop

rjmp Main

backward: ; pb 0 + pd 6

ldi r24, 64
out PORTD, r24
ldi r24, 1
out PORTB, r24

; delay

ldi r17, 0x09 ; delay loop, 1Hz
WGLOOP3:
ldi r18, 0xBC
WGLOOP4:
ldi r19, 0xC4
WGLOOP5:
dec r19
brne WGLOOP5
dec r18
brne WGLOOP4
dec r17
brne WGLOOP3
nop

rjmp Main

Warten:
brie PC+2
reti
rjmp Warten

ADCfertig:
in temp, ADCH
ret


gruesse von der katz

PicNick
26.09.2006, 14:06
..bevor jetzt jmd "ultraschall" ruft: das mag meine katze nicht..

Tatsache ? Darüber haben wir schon diskutiert, so genau wußt' es keiner.
Und wenn Tatsache, wie hast du das verifiziert ?

robocat
26.09.2006, 14:29
muss dich enttäuschen, ich weiß es nicht genau.

conrad bietet ultraschallgeräte an, die katzen "vertreiben sollen". ob sie das wirklich tun, habe ich nicht getestet (schliesslich will ich meine katze ja nicht vertreiben).

"experimente" mit fledermäusen, die einfach so hereingeflattert sind, deuten eher darauf hin, dass sie sich davon nicht abschrecken lässt.

ich vermute, dass ab einer gewissen leistung katzen solchen ultraschallsendern eher aus dem weg gehen, vor allem, wenn keine chance besteht, das objekt zu fangen und zu fressen.

vergleichbar vielleicht damit, dass ich lärmquellen auch eher ausweiche, mich aber in ausnahmesituationen (disco) mich ihnen mutwillig aussetze.

gruesse von der katze

scales
26.09.2006, 15:11
vielleicht hat jmd. eine idee, wie man diese probleme lösen kann? ich dachte als nächstes an "bumper" (also schalter, die beim "wo dagegenbrettern" ausgelöst werden) oder daran, den motorstrom zu messen (motorstrom hoch -> hindernis -> rückwärts fahren).

also bumper sind denk ich nicht so das wahre,
- erstmal müsste die ganze front und eventuell auch die Rückseite abgedeckt sein
- die dingern dürfen nicht zu schwer aber auch nicht zu leicht drückbar sein
- wenn du schnell unterwegs bist kannst du die Dinger vergessen
(das wär das Auto der Zukunft, merkts sogar wenn man volle kanne gegen die Wand gefahren ist)



bevor jetzt jmd "ultraschall" ruft: das mag meine katze nicht.

warum heist das auto dann überhaupt Katzenscheck?

also ich denke ich hab da mehr Angst dass meine Katze das Auto kaputt macht,
als die Katze Angst vor dem Auto
(die sitzt schon immer daneben als würde sie gleich losspringen)



conrad bietet ultraschallgeräte an, die katzen "vertreiben sollen".

ich denk Ultraschall hat da nen weiten Frequenzbereich,
immerhin wird Ultraschall ja auch in der Tiermedizin benutzt

da würd ich mir keine allzu großen Gedanken drüber machen


im Grunde wärs gar nicht so schlecht, dann würden Katzen nicht mehr vor Autos laufen
(ich mein jetzt die richtigen großen Autos),
zumindest nicht vor die mit Ultraschallabstandswarner