Moin, hier eine Virtual Wall für den alten Zossen Roomba (581 u.a.) mit
dem ATtiny13A. Kompiliert mit WinAVR.
Die 940nm-IR-LED ist über 68Ohm an PB0 angeschlossen.
1
// Roomba (581) Virtual Wall mit ATtiny13A, IR-LED an PB0 (OC0A)
Servus,
ich weiß zwar nicht, was die Roomba(581) Virtual Wall sein soll, aber
ein paar Anmerkungen zum Code:
1. Warum kein Brown-Out gesetzt?
Bei 9,6MHz braucht man mindestens ~3V (oder Brown-Out auf 2,7V gesetzt).
Kann vor seltsamen Verhalten schützen.
2. Warum 9,6MHz?
Der Code sollte auch mit 4,8MHz oder noch weniger (dann per Prescaler)
funktionieren, und der Stromverbrauch sinkt um knapp 50% (bei 9,6MHz ==>
4,8MHz) oder noch weiter.
3. Nutzen von IDLE-Mode
Da sich der µC "die ganze Zeit" im _delay_us() befindet bietet es sich
natürlich an, den µC während dieser Zeit schlafen zu legen (IDLE-Mode)
und dann per Interrupt aufwecken zu lassen. Ist halt blöd, daß der
einzige Timer schon fürs PWM verwendet ist.
Ideen:
- TIMER 0 Overflow verwenden und diese "hochzählen"
- Den ADC im free-Run laufen lassen, und per ADC-Interrupt diesen dann
als regelmässige Taktquelle verwenden. Da muß man aber schauen, ob man
per ADC-Prescaler den richtigen Takt hinbekommt.
==> Vorteil: man lernt den µC kennen (das schadet nie) und spart noch
ein paar mA (auch ganz nett)
Gruß
Der Chef schrieb:> ich weiß zwar nicht, was die Roomba(581) Virtual Wall sein soll
Und ich weiß gar nicht, ob es das überhaupt noch gibt, weil die neueren
Saugroboter wahrscheinlich schon wesentlich cleverer sind.
Die Virtual Wall wirkt wie eine Absperrung für den Roboter, so daß er
den gepulsten IR-Strahl nicht kreuzt. Er fährt am Strahl entlang wie an
einer Wand, kann aber das Gebiet auf der anderen Seite nicht erreichen.
Das Protokoll kennt nicht jeder, und mit den delay-Angaben kann man
sehen, wie es funktioniert. Auch für weniger alte Roombas (zumindest die
700er) funktioniert es.
Die mitgelieferten VWs sind klobig, brauchen zwei Babyzellen, sind immer
leer, wenn man sie braucht, und der Abstrahlwinkel ist ziemlich breit.
Der kleine Tiny und eine 3mm IR-Led lassen sich einfacher verstecken,
und sie hängen bei mir an einer dünnen 5V-Leitung hinter der
Fußbodenleiste.
> ein paar Anmerkungen zum Code:
Deine Vorschläge sind für Batteriebetrieb gut geeignet. Habe ich gar
nicht drüber nachgedacht.
Oliver S. schrieb:> Man könnte auch einfach einen größeren Tiny oder auch Mega nehmen. Platz> und Geld sollten das hergeben.
Oder einen Cortex M4, da kann man auch noch mehr LEDs an die Pins hängen
g. Die Tiny13A sind tatsächlich überdimensioniert für den Zweck, aber
gibt es halt unverschämt günstig beim schnellen Ali.
Jürgen S. schrieb:> Moin, hier eine Virtual Wall für den alten Zossen Roomba (581 u.a.) mit> dem ATtiny13A. Kompiliert mit WinAVR.
Obercool, danke für die Anregung.
Ein "Prototyp" läuft auf Anhieb mit Teilen aus der Kiste (ATINY45, Timer
angepasst, 5mmLED, Li-Ion Akku)
Uwe