PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Domino Day für den RP6



radbruch
17.11.2007, 23:06
Hallo

Davon habe ich schon immer geträumt, aber rein mechanisch (mit lego oder fischertechnik..) hat das nie funktioniert:

http://img.youtube.com/vi/SZ3aWmsqfFQ/2.jpg (http://www.youtube.com/watch?v=SZ3aWmsqfFQ)
http://www.youtube.com/watch?v=SZ3aWmsqfFQ

Nach vielen Versuchen kann ich nun sagen, dass die Fertigungstoleranzen meiner Bio-Dominosteine absolut unakzeptabel sind. Ich vermute, die werden aus massivem Holz rausgebissen. Ich werde dem Hersteller/Vertrieb mal eine Kopie der Videos senden...

Beim Aussortieren der "schräg" gesägten Steine:

http://img.youtube.com/vi/6RqBD0XeheQ/2.jpg (http://www.youtube.com/watch?v=6RqBD0XeheQ) http://img.youtube.com/vi/DcgoIOig_Mk/1.jpg (http://www.youtube.com/watch?v=DcgoIOig_Mk)
http://www.youtube.com/watch?v=6RqBD0XeheQ
http://www.youtube.com/watch?v=DcgoIOig_Mk

Das Programm auf Basis meiner Mini-Lib:

// Domino Day für den RP6 16.11.07 mic

#include "rblib.h"
#include "rblib.c"

uint8_t y, z;

ISR(TIMER0_COMP_vect)
{
static uint16_t count=0;
//if(count>x) PORTA &= ~16; else PORTA |= 16; // E_INT1 (Pin8)
if(count>y) PORTC &= ~1; else PORTC |= 1; // SCL (Pin10)
if(count>z) PORTC &= ~2; else PORTC |= 2; // SDA (Pin12)
if(count<1000)count++; else count=0;
}
void servo_init(void)
{
//DDRA |= 16; // E_INT1 als Ausgang
DDRC |= 3; // SCL und SDA als Ausgang

TCCR0 = (0 << WGM00) | (1 << WGM01); // CTC-Mode
TCCR0 |= (0 << COM00) | (0 << COM01); // ohne OCR-Pin
TCCR0 |= (0 << CS02) | (1 << CS01) | (0 << CS00); // prescaler /8
TIMSK = (1 << OCIE0); // Interrupt ein
OCR0 = 9; // 100kHz?
}
int main(void)
{
rblib_init();
servo_init();

setLEDs(0b1001);
setMotorDir(FWD,FWD);
setMotorPWM(0,0);
z=225;
y=100;
delay(255);

while(1){
y=161; // hoch
delay(100);
z=211; // greifen
delay(50);
y=45; // runter
delay(50);
setMotorDir(BWD,BWD); // zurück
setMotorPWM(50,50);
delay(50);
setMotorPWM(0,0);
delay(50);
z=202; // loslassen
delay(150);
z=195; // auf Abstand
delay(50);
setMotorDir(FWD,FWD); // vor
setMotorPWM(50,50);
delay(100);
setMotorPWM(0,0);
}

return 0;
}

Doku des Greifers folgt noch

Gruß

mic

WDragon91
18.11.2007, 08:37
Wow genial gemacht coole Idea, damit schaffense nächstes Jahr bestimmt den Rekord O:)

Tido
18.11.2007, 08:42
Moin,

auch wenn ich den "offiziellen" Domino-Day nicht mehr sehen kann finde ich deine Version super klasse!!! Sieht ja schon richtig toll aus, das Aufstellen klappt besser als wenn ich das machen würde ;-)
Und Umwerfen kann er sie ja auch schon!

radbruch
18.11.2007, 14:02
Hallo

Hier noch die fehlende Beschreibung des Greifers. Im wesentlichen nur ein kleines Servo, etwas Alu-Flachmaterial (7,5x1,5mm, im Baumarkt 1m ca. 0,90€, kann man klasse mit der Kombizange biegen und abzwicken), 3 Reiszwecken als Lager, zwei Ritzel und 3 minikleine Schrauben (aus alten Floppy-Laufwerken waren die glaube ich), 4 Pinwandnadeln, 4 Gummiringe und etwas Heiskleber (darf natürlich nicht fehlen):

http://radbruch.roboterbastler.de/rp6/greifer/greifer1_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/greifer1.jpg)
http://radbruch.roboterbastler.de/rp6/greifer/greifer2_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/greifer2.jpg)
http://radbruch.roboterbastler.de/rp6/greifer/greifer3_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/greifer3.jpg)
http://radbruch.roboterbastler.de/rp6/greifer/greifer4_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/greifer4.jpg) http://radbruch.roboterbastler.de/rp6/greifer/greifer5_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/greifer5.jpg) http://radbruch.roboterbastler.de/rp6/greifer/greifer6_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/greifer6.jpg) http://radbruch.roboterbastler.de/rp6/greifer/greifer7_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/greifer7.jpg)

http://img.youtube.com/vi/rLLO4MKR2sM/1.jpg (http://www.youtube.com/watch?v=rLLO4MKR2sM)
http://www.youtube.com/watch?v=rLLO4MKR2sM
Orginales 1,6MB-mpg (http://radbruch.roboterbastler.de/rp6/greifer/greifer.mpg)

Gruß

mic

fey
18.11.2007, 14:52
Genial. Ich kanns kaum erwaten das nachzubaun.
Wieviel hat das zusamen gekostet? Und wie baut man den Arm?

Manf
18.11.2007, 15:14
Tolle Sache, das gefällt mir sehr gut.

So wie ich es erkenne:
Der Arm fährt auf zwei Positionen.
Beim Greifer wird eine Hälfte über das Sevohorn geführt die andere auf der Gegenseite über ein Zahnradpaar gespiegelt. Der Servo fährt beim Öffnen auf Position und beim Schließen gegen den Anschlag am Domino-Stein? Die Nadeln werden in einer Art Spannvorrichtung mit Gummi gehalten, (erstaunlich wie sie da halten).

Das Magazin ist wohl im unteren Drittel geschlossen und die Steine werden werden seitlich herausgezogen und nach einer viertel Drehung aufgestellt. Der folgende Stein wird bei der Herausnahme duch einen Vorspung im Magazin gehalten.

Der zeitliche Ablauf ist recht flüssig, die Zeiten wurden sicher über ein paar Durchläufe optimiert.
Wie gesagt, ganz toll.
Manfred

radbruch
18.11.2007, 15:56
Hallo

Die Miniservos kosten 5€ beim C, Alu 1€, Kleinteile ein paar Cent, die "Zähne" können natürlich anders gestaltet werden, je nachdem, was man greifen möchte. Die Gummis gleichen Ungenauigkeiten aus und sorgen für etwas Vorspannung (und begrenzen die Kraft!).

Da beim Domino der Greifer (bisher) nur in einer Ebene bewegt wird, ist der "Arm" eher unspektakulär. Das wird sich aber ändern, wenn ich mein monoleg-Projekt am Ziel ist und ich die Servos für den Greifer verwenden kann.

http://radbruch.roboterbastler.de/rp6/greifer/arm1_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/arm1.jpg) http://radbruch.roboterbastler.de/rp6/greifer/arm2_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/arm2.jpg) http://radbruch.roboterbastler.de/rp6/greifer/arm3_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/arm3.jpg) http://radbruch.roboterbastler.de/rp6/greifer/arm4_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/arm4.jpg) http://radbruch.roboterbastler.de/rp6/greifer/arm5_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/arm5.jpg)

@Manf:

Das Lob eines 10000ders geht mir natürlich runter wie Öl. Deine Beschreibung des Greifers stimmt genau, da aber keine (Druck-)-Rückmeldung erfolgt, schließt der Greifer auf eine feste Position, die Klemmkraft kommt letztlich aus den Gummis. Hauptproblem (außer schräg gesägten Steinen) ist der Heiskleber an den Pinspitzen; er haftet zu gut an den Steinen und reißt diese beim Loslassen mit.

Das "Timeing" ist übrigends noch nicht optimiert! Auch die Fahrwege und der Ablauf sind noch beta.

Die Rampe ist aus einem Kabelkanal gefertigt und steht ohne Befestigung auf dem RP6. Sie kann zum (fummeligen) Auffüllen leicht abgenommen werden. Die Kugel dient dazu, die Steine bei fast leeren Magazin bis zum Anschlag zu schieben. Sie darf aber nicht zu früh reingelegt werden, sonst schafft es der Greifer nicht, den Stein unten rauszuziehen. Leider sind die Pics nicht alle scharf, aber man sieht wohl, wie's gemeint ist. (klingonen sollten die folgenden Bilder besser nicht betrachten)

http://radbruch.roboterbastler.de/rp6/greifer/rampe1_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/rampe1.jpg) http://radbruch.roboterbastler.de/rp6/greifer/rampe2_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/rampe2.jpg) http://radbruch.roboterbastler.de/rp6/greifer/rampe3_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/rampe3.jpg) http://radbruch.roboterbastler.de/rp6/greifer/rampe4_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/rampe4.jpg) http://radbruch.roboterbastler.de/rp6/greifer/rampe5_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/rampe5.jpg)

Gruß

mic

adrisch
18.11.2007, 17:36
Ich muss sagen - das ist saugeil - iund ich komm immer noch nich voran...

roboterheld
18.11.2007, 19:37
so etwas kannste auch schon mit fischertechnik bauen ohne chip.

der rp6 ist da unterfordert mit der proggerei mit so einer stupiden verrichtung.

für den rp6 gibt es spannendere sachen.

geht auch nur wenn die fläche gerade ist. bei domino day sieht es etwas spannender aus. das schafft der robby nicht mehr.

adrisch
18.11.2007, 19:45
Ich hatte auch mal ein mechanisches Ding (15€. http://www.amazon.de/Hasbro-72893177-Domino-Express-Dealer/dp/B0000TZ61Y/ref=pd_bbs_sr_2?ie=UTF8&s=toys&qid=1195415088&sr=8-2) Aber ich find mit dem Greifer sieht des saucool aus.

fey
18.11.2007, 19:51
Wenn man den Bot ner Linie folgen lässt....dann kann man theoretisch DominoDay-mäßige Strukturen bauen. Und der arme RP ist nicht mehr so unterfordert^^

robo.fr
18.11.2007, 21:03
Gute Idee! Ich habe auch schon drüber nachgedacht, wie man eine interressante Dominospur hinkriegen könnte. Zuerst ein Linie hinzumalen ist sehr gut.

radbruch
18.11.2007, 22:08
Hallo


der rp6 ist da unterfordert mit der proggerei mit so einer stupiden verrichtung.
Klar ist der RP6 mit dieser "Aufgabe" völlig unterfordert; das könnte mein tiny13 auch locker erledigen. Aber auf dem Weg zu einem richtig brauchbaren Greifer muss man erst die Basics beherrschen. Als Plattform für solche Spielereien ist der RP6 ideal. Ausreichend groß und kräftig genug für solche "Aufbauten", mit Spannungsversorgung und fertigem Fahrwerk und einer klasse Entwicklungsumgebung durch den Loader.

Anstelle der Linie kann man ja erst mal softwaremässig eine Route vorgeben nach der die Steine gesetzt werden. Oder man steuert den RP6 mit einer Modelbaufernbedienung:

http://img.youtube.com/vi/lwq3RZguby0/1.jpg (http://www.youtube.com/watch?v=lwq3RZguby0)
http://www.youtube.com/watch?v=lwq3RZguby0

Blöderweise klemmt grad mal wieder der linke Antrieb, er fährt nicht zurück. Aber das hatte er schon immer. Ich mache noch ein schöneres Video, wenn er wieder richtig läuft.

Das Auswerten der RC-Signale ist unglaublich einfach. Ich verwende dazu die selbe ISR wie beim Ansteuern der Servos (beides zusammen funktioniert übrigens auch prima). Wenn man die Aufrufe der ISR bei gesetztem RC-Eingangspin zählt, erhält man Werte die denen der Servosteuerung entsprechen. Der RP6 kann so sogar seine eigenen Servoimpulse zählen:


// RC-RP6 erster Versuch 18.11.07 mic

#include "rblib.h"
#include "rblib.c"

uint8_t y, z;
uint8_t rc_input_pwr, rc_input_dir;
uint8_t rc_pwr, rc_dir;

ISR(TIMER0_COMP_vect)
{
//static uint16_t count=0;
static uint16_t rc_temp_pwr=0;
static uint16_t rc_temp_dir=0;
//if(count>x) PORTA &= ~16; else PORTA |= 16; // E_INT1 (Pin8)
//if(count>y) PORTC &= ~1; else PORTC |= 1; // SCL (Pin10)
//if(count>z) PORTC &= ~2; else PORTC |= 2; // SDA (Pin12)
//if(count<1000)count++; else count=0;
if (PINC & 1) rc_temp_dir++; else
if (rc_temp_dir) { rc_input_dir=rc_temp_dir-1; rc_temp_dir=0; }
if (PINC & 2) rc_temp_pwr++; else
if (rc_temp_pwr) { rc_input_pwr=rc_temp_pwr-1; rc_temp_pwr=0; }
}
void servo_init(void)
{
//DDRA |= 16; // E_INT1 als Ausgang
//DDRC |= 3; // SCL und SDA als Ausgang

TCCR0 = (0 << WGM00) | (1 << WGM01); // CTC-Mode
TCCR0 |= (0 << COM00) | (0 << COM01); // ohne OCR-Pin
TCCR0 |= (0 << CS02) | (1 << CS01) | (0 << CS00); // prescaler /8
TIMSK = (1 << OCIE0); // Interrupt ein
OCR0 = 9; // 100kHz?
}
int main(void)
{
rblib_init();
servo_init();

setLEDs(0b1001);
setMotorDir(FWD,FWD);
setMotorPWM(0,0);

while(1)
{
rc_pwr=0;
rc_dir=0;

if (rc_input_dir<120) { rc_dir=150-rc_input_dir; setMotorDir(BWD,FWD); }
if (rc_input_dir>140) { rc_dir=rc_input_dir-110; setMotorDir(FWD,BWD); }
if (rc_input_pwr<120) { rc_pwr=150-rc_input_pwr; setMotorDir(FWD,FWD); }
if (rc_input_pwr>140) { rc_pwr=rc_input_pwr-110; setMotorDir(BWD,BWD); }
rc_pwr*=3;
if (rc_pwr)
{
if (rc_input_dir<120) setMotorPWM(rc_pwr-rc_dir,rc_pwr+rc_dir);
else if (rc_input_dir>140) setMotorPWM(rc_pwr+rc_dir,rc_pwr-rc_dir);
else setMotorPWM(rc_pwr,rc_pwr);
}
else
{
setMotorPWM(rc_dir*3, rc_dir*3);
}

}

return 0;
}

Gruß

mic

recycle
19.11.2007, 00:51
@Roboterheld


der rp6 ist da unterfordert mit der proggerei mit so einer stupiden verrichtung.

für den rp6 gibt es spannendere sachen.

Dein PC war beim Verfassen deines relativ anspruchslosen Beitrags sicherlich auch unterfordert. Ich hoffe mal dir hat der Kopf dabei auch nicht allzu sehr geraucht ;-)



für den rp6 gibt es spannendere sachen.

geht auch nur wenn die fläche gerade ist. bei domino day sieht es etwas spannender aus. das schafft der robby nicht mehr.

Und ich dachte schon die unzähligen Leute die so einen "Domino-Day" vorbereiten, stellen die Steine wochenlang von Hand auf, weil sie zu geizig sind nen RP6 dafür zu kaufen ;-)

"Spannend" ist übrigens Geschmacksache. Ich finde Radbruch's Video wesentlich spannender als stundenlang Dominosteinen beim Umkippen zuzusehen.

radbruch
19.11.2007, 17:43
Hallo

Nach dem Erwärmen (anhauchen, das klappt häufig) der Motortreiber fährt er nun wieder auf beiden Seiten rückwärts, deshalb hier das versprochene Video:

http://img.youtube.com/vi/A_GYUeFAgY8/2.jpg (http://www.youtube.com/watch?v=A_GYUeFAgY8)
http://www.youtube.com/watch?v=A_GYUeFAgY8

Weil der Anschluß der Funkfernbedienung so einfach ist, lohnt es sich nicht, dafür einen extra Thread zu starten. Deshalb hier noch ein paar Details:

Es ist eine normale 27Mhz-2Kanal-Proportional-Fernbedienung aus dem Modellbau. Meine habe ich mir bei meinen Kids "geliehen", die spielen eh nicht mehr damit. Im Set mit 2 Servos und Akkus gibts die im Versandhandel ab ca. 40€.

Spannungsversorgung für den Empfänger kommt vom RP6 (5V), die Servosignale sind über je einen 820 Ohm Widerstand mit den Eingängen des Mega32 verbunden. Die Steckerbelegung ist wie bei den Servos, deshalb kann ich die Fernbedienung einfach anstelle eines Servos in meinen Adapter am xBus einstöpseln:

http://radbruch.roboterbastler.de/rp6/rc-rp6/rc-rp6e_klein.jpg (http://radbruch.roboterbastler.de/rp6/rc-rp6/rc-rp6e.jpg) http://radbruch.roboterbastler.de/rp6/rc-rp6/rc-rp6d_klein.jpg (http://radbruch.roboterbastler.de/rp6/rc-rp6/rc-rp6d.jpg) http://radbruch.roboterbastler.de/rp6/rc-rp6/rc-rp6a_klein.jpg (http://radbruch.roboterbastler.de/rp6/rc-rp6/rc-rp6a.jpg) http://radbruch.roboterbastler.de/rp6/rc-rp6/rc-rp6c_klein.jpg (http://radbruch.roboterbastler.de/rp6/rc-rp6/rc-rp6c.jpg)

Durch die proportionale Ansteuerung des RP6 ist das Fahrverhalten (trotz einfachster Software) sehr geschmeidig, deutlich besser als die IR-Fernbedienung-/Terminallösungen. Ich werde mal versuchen, damit die Servopositionen des Greifers zu teachen.

Gruß

mic

ex535
20.11.2007, 21:00
Hallo radbruch.

Wo finde ich
#include "rblib.h"
#include "rblib.c"

Gruß
Kurt

radbruch
21.11.2007, 07:22
Das ist ein Versuch mit einer minimalen Lib für den RP6:

ex535
21.11.2007, 17:05
Danke radbruch.

Ich habe noch eine MC20 (Graupner) mit 16 Kanal Empfänger.
Werde mich bei nächster Gelegenheit mit der MC20 und RP6 beschäftigen.
Gruß
Kurt

Stratege993
27.12.2007, 09:51
Habe eine gute Idee wie der Robby beim Dominoday helfen könnte. Man kann in diese lange Sicherheitslinie bauen lassen. Leider sind das immer 2 Linien nebeneinander. Dann braucht man 2 Greifer oder man macht den einen so, dass er immer nach Links fahren kann um ne 2 Reihe parallel zu bauen :-)
Stratege993

radbruch
27.12.2007, 12:48
Hallo

Ein größerer "Arm" mit mehr Gelenken ist natürlich schon in Planung. Das dauert aber noch ein bisschen bis der fertig ist.

Gruß

mic

Pr0gm4n
01.03.2008, 10:31
Hi an alle,

@radbruch: kannst du mir evtl mal ne art schaltplan (bloß verständlicher, ich komm mit denen nich so gut klar) von deiner Servo-Platine mit Ansteuerungscode schicken?? möchte auch eine bauen, nur mit mehr Pins, da ich meine MX-12 Fernsteuerung von Graupner auch anschließen will und dafür allein schon 8 Anschlüsse benötige...

Ausserdem, wie rufe ich denn das Signal der Fernsteuerung dann ab??


Jetzt noch ne generelle Frage: Ich kann doch den Servo auch direkt an so einen ADC dranhängen oder? Wenn ja, muss dann da nur noch so ein 3-Pin Teil rein, und der Servo draufgesteckt werden, damit ich ihn dann ansteuern kann??


MfG Pr0gm4n

radbruch
01.03.2008, 12:36
Hallo

Zuerst ein paar Pics:

http://radbruch.roboterbastler.de/rp6/greifer2/servoanschluss4_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer2/servoanschluss4.jpg) http://radbruch.roboterbastler.de/rp6/greifer2/servoanschluss5_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer2/servoanschluss5.jpg) http://radbruch.roboterbastler.de/rp6/greifer2/servoanschluss1_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer2/servoanschluss1.jpg)
http://radbruch.roboterbastler.de/rp6/greifer2/servoanschluss3_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer2/servoanschluss3.jpg) http://radbruch.roboterbastler.de/rp6/greifer2/servoanschluss2_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer2/servoanschluss2.jpg)
(Oben ist Minus, Mitte ist Plus und Unten sind die Signale angeschlossen)

Nun zu deinen Fragen:


Ich kann doch den Servo auch direkt an so einen ADC dranhängen oder?
Ja, an ADC0/ADC1 kann man direkt ein Servo anschliessen, allerdings muss man die Pinbelegung des Servosteckers anpassen. Die kleine Zunge am Stecker kann man anheben und den Kontakt rausziehen und umstecken. Das Bild oben zeigt den schon geänderten Anschluß, im orginalen Zustand ist Plus(Vdd) in der Mitte und Minus(GND) außen. Das ist ein JR-Stecker, wenn ich mich nicht irre.


...wie rufe ich denn das Signal der Fernsteuerung dann ab?
Es gibt zwar mehrere Möglichkeiten ein Servo anzusteuern, wirklich gut ist aber nur eine Lösung mit einer Interruptserviceroutine(=ISR) (wie im Wiki beschrieben: Servo). Das so erzeugte Puls/Pause-Timeing ist das gleiche wie es auch eine RC-Fernsteuerung liefert. Deshalb drängt es sich geradezu auf, mit dieser ISR auch die Signale einer Fernbedienung einzulesen. Wie schon weiter oben beschrieben (Link (https://www.roboternetz.de/phpBB2/viewtopic.php?p=328824#328824)) sieht der Programmteil in der ISR dazu etwa so aus:

if (PINC & 1) rc_temp_dir++; else
if (rc_temp_dir) { rc_input_dir=rc_temp_dir-1; rc_temp_dir=0; }
(Das RC-Signal ist am SCL-Pin des XBUS(Pin10, Port C0) angeschlossen, in rc_input_dir steht dann der Wert. Diesen kann man übrigens direkt an ein Servo weitergeben...)

Das funktioniert mit 2 RC-Kanälen sehr gut, mit 8 Kanälen wird das allerdings kritisch. Gute (und teure) RC-Empfänger liefern außer den einzelnen Servosignalen auch ein Summensignal (an einem extra Anschluß) Dieses enthält die Steuerpulse für alle Kanäle und könnte ebenfalls ausgewertet werden. Das habe ich allerdings noch nicht versucht, deshalb kann ich dazu keine Lösung anbieten(Link (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=35713)). Über den Sinn einer sochen Funktion könnte man auch philosophieren, schließlich ist der RP6 ja ein autonomer Roboter...


...kannst du mir evtl mal ne art schaltplan ... von deiner Servo-Platine mit Ansteuerungscode schicken?(Ich vermute, deine ?-Taste prellt...)

Zur Zeit bastle ich an einem 6-fach-Adapter an den LED-Anschlüssen. Am RP6 habe ich Stiftleisten in die Anschlüsse IO1-IO4, BPL und BPR gelötet und dazu passenend Stecker zur Verbindung mit einer kleinen Lochstreifen-Platine angefertigt. Die Stiftleisten auf der Platine sind jeweils an Plus und Minus angeschlossen, ebenso wie die 100uF, 2uF und 100nF-Kondensatoren die zur Pufferung und Entstörung dienen (sollen?). Die Signalpins der Stiftleisten gehen direkt zu den 6 Steckerchen. Die ISR zur Ansteuerung von 6 Servos an den LED-Pins sieht bei mir so aus:


ISR (TIMER0_COMP_vect)
{
static uint16_t count=0; // Servoansteuerung
(count>s1)?(PORTC&=~SL1):(PORTC|=SL1);
(count>s2)?(PORTC&=~SL2):(PORTC|=SL2);
(count>s3)?(PORTC&=~SL3):(PORTC|=SL3);
(count>s4)?(PORTB&=~SL4):(PORTB|=SL4);
(count>s5)?(PORTB&=~SL5):(PORTB|=SL5);
(count>s6)?(PORTB&=~SL6):(PORTB|=SL6);
/*
(count>s7)?(PORTA &= ~1):(PORTA |= 1);
(count>s8)?(PORTA &= ~2):(PORTA |= 2);
*/
if(count<2000) count++; else count=0;
}
Servo 1 bis 6 (s1-s6) sind die LED-Anschlüsse, Servo 7+8 (s7+s8) sind ADC0/ADC1. Der Code stammt übrigends von meinen ersten "Gehversuchen" und meinen neuen Greifer:

http://i.ytimg.com/vi/i4tYTp2gbPg/2.jpg (http://www.youtube.com/watch?v=i4tYTp2gbPg) http://radbruch.roboterbastler.de/rp6/greifer2/greifer_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer2/greifer.jpg)
http://www.youtube.com/watch?v=i4tYTp2gbPg

Noch eine Anmerkung zum Stromverbrauch: Meine Servos ziehen beim Blockieren bis zu 0,5A! Der Festspannungsregler des RP6 ist aber nur für 1,5A ausgelegt. Er kann zwar größere Stromspitzen vertragen und hat eine eingebaute Überstromabschaltung, wird aber im Dauerbetrieb mit mehreren Servos extrem heis. Deshalb hat mein RP6 ein kleines Kühlblech unter dem Spannungsregler. Im Moment betreibe ich sechs meiner 8 Servos mit einem zusätzlichen 4,8V-Akkupack. Der 7. Stecker oben im Bild ist der Minus-Anschluss (GND) dieses Akkupacks zum Anschluß an den RP6. Um das Übergewicht wieder loszuwerden plane ich aber schon eine zusätzliche Spannungsreglerplatine.

Gruß

mic

Pr0gm4n
01.03.2008, 14:49
Hi radbruch,

irgendwie find ich deine ganzen sachen cool...

hab nächste woche leider keine Zeit, um die Fernsteuerung u.s.w. anzuschliessen, aber wenn die teile von Reichelt endlich kommen, dann leg ich los

Ich versuch natürlich zuerst, das Softwaretechnische zuerst selbst hinzukriegen (und auch Hardware) und wenn ichs nicht schaff, dann guck ich mir das hier nochma an...

Ich baue evtl. eine Garage aus Holz für den RP6, die er mit einem eigenen Sender (wie meine Fernsteuerung halt) öffnen kann

Sowas wollt ich schonma für mein Modellauto bauen, und es mit der MX-12 dann öffnen lassen, aber hatte noch nich die Zeit zu

Ich baue irgendwann auch evtl mal einen Greifarm, aber dann würd ich ihn gerne vom RP6 unabhängig haben, aber auch ganz schnell einen Teil davon abzumontieren, den man dann auf den RP6 setzt, nen Stecker reinmacht und sich freut, weil er jetzt vom RP6 gesteuert wird...


Naja, mit dem Projekt wart ich lieber noch 'n bisschen

MfG Pr0gm4n

proevofreak
04.05.2008, 17:41
hallo radbruch, find deinen greifer ne schöne idee und würd ihn mir drum gern nachbauen. kannst du mir vielleicht sagen, woher du die 2 zahnräder hast bzw. wo du sie gekauft hast?

gruß

radbruch
04.05.2008, 19:44
Die Zahnräder sind aus diesem Sortiment: http://www.conrad.de/goto.php?artikel=297402

Pr0gm4n
04.05.2008, 19:51
Hi,

sin die Zahnräder da nich ein bissl teuer??


ich nehm doch lieber http://www.pollin.de/shop/shop.php mit suche nach zahnrad-sortiment, irgendwie billiger


nur für servos hab ich noch keine richtig gute alternative zum großen C, ich hab zwar was gefunden, aber Chinaware muss es ja auch nicht gerade sein...


MfG Pr0gm4n

Laias
09.07.2008, 19:00
Ich bins nochmal!

Eben is mir was ganz komisches passiert O_O

Ich wollte einfach nur mal testen ob ich mit dem M32 Board eine LED ansteuern kann. Ich hab wie gewohnt das USB interface an das m32 board angeschlossen und das Programm über den RP6 Loader gestartet.
Auf einmal gehen alle LEDS aus und der rp6 macht keinen Mux mehr!

Egal ob er an oder aus ist es passiert nichts die poweronled leuchtet nicht.

Die Akkus sind eigentlich auch alle voll gewesen.

Ich prüfe nochmal die gesammte Spannung aber das ist irgendwie merkwürdig.

mfg

Laias

EDIT : MIST falscher Theard! kann man beiträge auch moven?

EDIT2 : Sorry Leute. Es lag an der Sicherung. Aber das die hier durchbrennt??? Vielleicht hab ich nen kurzschluss gemacht^^

radbruch
20.02.2009, 23:33
Bin ich grad zufällig drübergestolpert:

http://i3.ytimg.com/vi/VTRp3VH_M7o/default.jpg (http://www.youtube.com/watch?v=VTRp3VH_M7o)
http://www.youtube.com/watch?v=VTRp3VH_M7o

oberallgeier
20.02.2009, 23:59
Schick, so etwas hattest Du doch auch gemacht, nicht wahr? 16 Dominosteine in 3 Minuten ist aber kein schlechtes Tempo! denke ich.

Pr0gm4n
21.02.2009, 14:12
´Hey,

nachdem ichs jetz doch nochmal nachgeschaut hab:

kann es sein dass der in dem video nur nen greifer von lynxmotion hat? die sehen genauso aus...

btw ich find die version von radbruch eh besser, zum 1. weil er RN-User ist und zum 2. weil ich sein talent für das "richtige" basteln bewundere, als beispiel der greifer seines roboarms :D

ich kann das irgendwie ned so gut, ich bin da mehr der typ der das am pc konstruiert und machen lässt, zusammenbaut und dann aber n schon recht geiles ergebnis kriegt :D


LG Pr0gm4n

radbruch
21.02.2009, 15:53
Hallo

Der Titel "RP6 + Lynx6 Dominoes" des Videos läßt vermuten dass es ein Lynx-Arm ist.

Selbermachen macht eh mehr Spass, ich versuche allerdings meist meine Projekte einfach und kostengünstig zu halten. Im Moment fasziniert mich ein paralleler Roboterarm mehr als diese "steifen" seriellen Gesellen. Eine Bastellösung versuche ich hier:

http://i2.ytimg.com/vi/QeY_KkZRlDc/2.jpg (http://www.youtube.com/watch?v=QeY_KkZRlDc)
http://www.youtube.com/watch?v=QeY_KkZRlDc

Das ist übrigends mein erster Arm der auf Anhieb halbwegs schick funktioniert. Wenn er fertig ist wird er vielleicht mit Dominosteinen jonglieren können *lol*

Vergnügliche närrische Tage wünsche ich euch.

mic

beazmusix
21.02.2009, 16:59
hallöle,

habe mir vor kurzem einen rp6 zugelegt und bin kompletter anfänger... habe es aber schon geschafft die ganzen beispiele draufzuladen und auch ein wenig zu verändern *g*

also was du hier so machst is ja der wahnsinn.

ich muss mich mal durchfuchsen und werde sicherlich noch eine menge hier lernen.

deine youtube video collection is ja echt riesig ^^

Pr0gm4n
21.02.2009, 18:32
Hi,

ach mist :D den titel vom video schau ich natürlich mal wieder ned an :D

war ja schonmal so...

aber deiner sieht schon krass cool aus :D

naja mal schaun was ich in sachen bodenobjekte in meim leben noch so bau :D

LG Pr0gm4n

vohopri
15.03.2009, 18:33
Hallo Mic,

hab den Thread mit dem Projekt erst jetzt entdeckt. Das nenne ich mechanischen Scratch Bau vom Feinsten. Viele gut gelöste Details stecken da drin.

Ganz nebenbei: 28 Cent pro Zahnrad ist auch nicht so arg teuer.

grüsse,
Hannes

julianf123
03.07.2009, 16:19
wo hast du du die Servos angeschlossen

TrainMen
03.07.2009, 17:08
Hi,
steht hier im Thread
Trainmen

julianf123
03.07.2009, 17:58
Hast du eigntllich in makefile datei was änder müssen um diese Programm (dominoday) zu Completieren?
wenn ja dann was?

radbruch
03.07.2009, 18:21
Hast du eigntllich in makefile datei was änder müssen ...Falls du mich meinen solltest: Ich kümmere mich nicht um Makefiles, das erledigt KamAVR (http://www.avrfreaks.net/index.php?module=Freaks%20Tools&func=viewItem&item_id=632) für mich :)

julianf123
05.07.2009, 09:57
Hallo radbruch ich fand den Youtub video wo der Roboter die domino steine aufbaut von dir so cool das ich das nachbauen wollte da geab es bis jaetzt noch keine probleme aber als ich den von dir oben geschriebernen programmcod compltieren wollte hat das überhaupt nicht funktieoniert.
In pn hat's nur ne fehler meldung gegeben warscheinlich weil man da noch etwas in der makefile datei änder müsste (auser den namen der datei)
da du mir aber geschrieben hast das du kamAVR verwendest wollte ich das damit probiren aber das hat auch nicht funtieoniert.
kanst du mir sagen was ich falsch gemacht hab?

Pr0gm4n
05.07.2009, 12:03
Hi,

soweit ich weiss verwendet radbruch seine eigenen Libraries

um seinen code benutzen zu können musst du diese also auch verwenden

LG Pr0gm4n

julianf123
05.07.2009, 15:24
ja die hab ich aber schon runtergeladen und bei den normalen librarys geschpeichert

Pr0gm4n
05.07.2009, 17:00
Ja speichern reicht nicht, du musst sie auch importieren

aber wenn du seinen code 1:1 übernimmst sollte das ja schon gemacht sein

wenns im gleichen verzeichnis ist, dann musst du dafür normal auch nicht das makefile verändern...

komisch xD

tut mir leid, da weiss ich dann auch nicht weiter


LG Pr0gm4n

julianf123
05.07.2009, 18:36
Also ich hab sie runter geladen dan hab ich sie enpackt und in den ordner RP6base in dem Lib ordner gespeichert

radbruch
05.07.2009, 19:50
Hallo

Kannst du andere/eigene Programme fehlerfrei kompilieren? Welche Fehlermeldungen werden angezeigt? (mit Copy&Paste hier in einem Codefenster zeigen)

Ich verwende eine eigene abgespeckte Library weil ich für die Servoansteuerung einen Timer verwende der von der orginalen Lib belegt ist. Eine andere Ansteuerung ermöglicht den Einsatz der orginalen Lib:

// RP6 steuert ein Servo an der SL1-LED mit Sleep()

#include "RP6RobotBaseLib.h"

uint8_t i;

int main(void)
{
initRobotBase();

while(true)
{
i=0; // i mit Startwert laden
while(getBumperLeft() && (i<5)) // Wenn links gedrückt fünf Impulse senden
{
setLEDs(1); // Impuls High senden
sleep(10); // ca. 10 * 100µs warten
setLEDs(0); // Impuls Low senden
sleep(200-10); // ca. 20ms - 1ms Pause
i++;
}

i=0;
while(getBumperRight() && (i<5))
{
setLEDs(1);
sleep(20);
setLEDs(0);
sleep(200-20);
i++;
}
}

return 0;
}
(Aus https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=394784#394784)

Das Servo wird bei IO1 (SL1) angeschlossen, die Impulse werden mit Sleep()s erzeugt.

Gruß

mic

[Edit]Dazu kann man ja seitenweise quasseln: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=407273#407273

julianf123
06.07.2009, 12:43
Also es hat jetzt hat es die fehlermeldung domino.c:35: fatal error: opening dependency file .dep/domino.o.d: No such file or directory angezeigt aber alsw ich sie hochgeladen haben pasierte nichts ich hab den signal anschluss bei IO1 angeschlossen plus bei VDD und minus bei GND

julianf123
06.07.2009, 15:10
Hat sich erledigt das mit den bummers dis funktioniert jetzt

julianf123
06.07.2009, 17:11
Hast du eigntlich deinen greifarm auch an die anschlüsse für die LEDs abgeschlossen ?

Übrigens deine erfindungen find ich total cool

_|Alex|_
12.05.2010, 12:08
@radbruch an welchem port war deine RC Anlage am M32?

BabaLrObOt
11.08.2010, 11:30
Ich bin neu beim rp6 und möchte mir einen einfachen greifer so wie radbruch bauen und wollte fragen wo ich die servos genau anschließen soll?

Kann da mal wer ein foto ins netz stellen?

Danke schonmal im vorraus für die antworten.

Kene
20.08.2010, 18:54
@ radbruch

hallo,

ich hab mal eine frage an den greifer.
Wie hast du das genau gemacht mit den "Zahnrädern" am Servo.


@BabaLrObOt

das möchte ich auch gern mal wissen wo man die anschließt

Mit freundlichen Grüßen

Michael

radbruch
22.08.2010, 09:04
Hallo

Hier werden die Signale über den XBUS ausgegeben. Obwohl die Pins teilweise mit PullUp ausgestattet sind, eignen sie sich wunderbar zum Anschluss kleiner Erweiterungen. Eine meiner ersten Lötübungen war ein kleiner XBUS-Adapter:

http://radbruch.roboterbastler.de/rp6/rc-rp6/rc-rp6a.jpg
(Bild aus https://www.roboternetz.de/phpBB2/viewtopic.php?p=328950#328950)

Auf dem Bild links sieht man die geraden Pins, unten links ist Pin2. Die weisen Drähte gehen auf Pin8( E_INT, PA4), Pin10(SCL, PC0) und Pin12(SDA, PC1). Rechts sind die Stiftleisten, jeweils das Signal, Vcc (von unten weis) und GND (von unten schwarz) (Servokonform). Die vierte Stiftleiste oben rechts ist nur mit VCC und GND belegt.

http://radbruch.roboterbastler.de/rp6/greifer/greifer1_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/greifer1.jpg)
(Bild (Anklicken für 1920x1080) aus https://www.roboternetz.de/phpBB2/viewtopic.php?p=328708#328708)

Der Antrieb erfolgt unten links mit dem Servohorn. Von dort geht die Kraft über die linke Greiferbacke zum linken Zahnrad. Dieses wiederum treibt das rechte Zahnrad und damit die rechte Greiferbacke an. Die Lager sind mit Heiskleber befestigte Reißzwecken. Hülsen zur Anpassung der Durchmesser an den Zahnrädern sind Kabelummantelungen.

Gruß

mic

Kene
22.08.2010, 09:43
ah danke

noch eine frage zu dem greifer :
und wie hast du die Lager angebracht (mit heißkleber ist mir schon kla).
Also mir einem reißnagel o. was ähnliches.

radbruch
22.08.2010, 10:28
"Die Lager sind mit Heiskleber befestigte Reißzwecken."

Reißzwecken = Reißnagel

Ein bewährtes Konzept:

http://radbruch.roboterbastler.de/monoleg/pics2/PB010024_klein.jpg (http://radbruch.roboterbastler.de/monoleg/pics2/PB010024.JPG)
(Bild aus https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=324867#324867)

:)

Kene
22.08.2010, 10:33
Genial ;)

Danke

_|Alex|_
10.02.2011, 13:50
Moin,

nachdem ich jetzt mehrfach mit längeren Pausen dazwischen versucht habe meine RC Anlage am Robo anzuschließen, und es nicht geschafft habe Frage ich jetzt nochmal nach.
Versucht habe ich es mit dem Programm von mic was er hier am anfang gepostet hat die beiden Libs habe ich auch eingebunden.
Versucht habe ich es auch mit dem fertig kompiliertenm Programm
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=50238&highlight=mac

Angeschlossen habe ich den Emfänger an XBUS Pin 10 (links/rechts)
Und XBUS Pin 12 (vor/zurück)
Leider dreht sich dabei immer nur die Rechte Kette was ja wie mic in einem anderen Beitrag geschrieben hat nur ein Programmier Fehler ist deshalb denke ich das meine RC Anlage gar nicht erkannt wird.
Funktionieren tut Sie aber da ich Sie eben nochmal mit zwei Servos getestet habe und das ging.
Es gab doch mal irgendwo was von MC Delta wo er versucht hat die Signale auszulesen oder?
Warscheinlich habe ich nur einen denk Fehler ist das so richtig?

Und nochmal Sorry das ich den alten kramm wieder ausgrabe :D

radbruch
10.02.2011, 17:10
Hallo

Erstaunlicherweise habe ich alle Teile auf Anhieb wiedergefunden, sogar die Batterien meines RC-Senders funktionieren noch (die waren natürlich separat gelagert). Zusammengestöpselt, das oben erwähnte, schon kompilierte Programm (https://www.roboternetz.de/phpBB2/download.php?id=17631) geflash, läuft.

Beim Anschluß muss selbstverständlich auch die Minus-Leitung des RC-Empfängers mit dem GND des RP6 verbunden sein!

"Die RC-Kanäle kommen an den XBUS-Stecker, links/rechts an Pin10 (SCL), vor/zurück an Pin12 (SDA). RC-Empfänger + und - an VCC und GND des RP6."

Ich hatte zusätzlich noch Angstwiderstände (820 Ohm) in die Signalleitungen eingebaut. Als Alternative zum XBUS kann man übrigends auch den I2C-Anschluß auf der RP6-Platine neben XBUS2 verwenden. Auf den 5 Pins liegen Vdd (5V), GND, SDA, SCL und INT1 (E_INT). Das hatte ich damals auch noch nicht gecheckt ;)

Wichtig ist vielleicht noch, dass die RC-Fernbedienung positive Servosignale sendet.

Aus heutiger Sicht betrachtet war das damals echter Murks, aber ich war Anfänger und es hat (leidlich) funktioniert. Inzwischen kann ich die Servos auch libverträglich ansteuern und der ganze rblib-Mist ist somit Geschichte:


// Servoansteuerung mit Timer1 31.1.2010 mic

// Einfach und elegant, warum finde ich das erst jetzt? Timer1 (RP6-Motoransteuerung)
// läuft ja sowieso im Hintergrund. Deshalb kann man die "klassische" Servoansteuerung
// in die Overflow-ISR einbauen und mit ca. 19kHz aufrufen lassen. Timersetup der Lib:
// Mode 10, Phase Correct mit ICR1 als Top ergibt bei ICR1=210 ca. 8MHz/420=19047,6Hz ;)

// Drehbereich meiner RS-2-Servos ist von ca. 14 bis ca. 38

#include "RP6RobotBaseLib.h"

volatile uint8_t servo1, servo2, servo3, p; // Servopositionen und Impulszähler
uint8_t c; // ein Char zur freien Verfügung

int main(void)
{
initRobotBase();
servo1=servo2=servo3=26; // Servomitte?
TIMSK |= (1 << TOIE1); // Die Timer1 Overflow-ISR zur Servoansteuerung
DDRA |= (E_INT1); // Servopins auf Ausgang setzen
DDRC |= (SCL | SDA);
setLEDs(1); // und los!
startStopwatch1();
startStopwatch2();
startStopwatch3();
while(1)
{
for(c=0;c<6;c++) // 6 mal ein einfaches Demo....
{
setLEDs(1<<c);
servo1=servo2=servo3=26; // mitte
p=50; while(p); // warten bis 50 Impulse gesendet (ca. 1 Sek.)
servo1=servo2=servo3=14; // links
p=50; while(p);
servo1=servo2=servo3=38; // rechts
p=50; while(p);
}
setStopwatch1(0);
setStopwatch2(0);
setStopwatch3(0);
while(c) // und 6 mal ein etwas anspruchsvolleres Demo
{
setLEDs(1<<c);
if(getStopwatch1()>1000)
{
setStopwatch1(0);
switch(servo1)
{
case 38: servo1=30; break;
case 30: servo1=20; break;
case 20: servo1=14; break;
case 14: servo1=21; break;
case 21: servo1=31; break;
case 31: servo1=38; break;
}
}
if(getStopwatch2()>100)
{
setStopwatch2(0);
servo2++;
if (servo2 > 38) { servo2=14; c--; }
}
if(getStopwatch3()>300)
{
setStopwatch3(0);
if (servo3 == 10) servo3=50; else servo3=10;
}
task_RP6System(); // Verträglichkeitstest ;)
}
}
return 0;
}
ISR (TIMER1_OVF_vect)
{
static uint16_t servocount=1;
if(servocount > servo1) PORTA &= ~E_INT1; else PORTA |= E_INT1; // PA4 XBUS 8
if(servocount > servo2) PORTC &= ~SCL; else PORTC |= SCL; // PC0 XBUS 10
if(servocount > servo3) PORTC &= ~SDA; else PORTC |= SDA; // PC1 XBUS 12
if(servocount < 400) servocount++; else {servocount=1; if(p) p--;} // p = 1/50 Sek
}(Code aus https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=483757#483757)

Allerdings ist die Auflösung viel geringer (100kHz zu knapp 20kHz), aber dafür ist der zusätzliche Code minimal:

TIMSK |= (1 << TOIE1);

schaltet den Overflow-Interrupt ein und bindet so die zusätzlich Timer1-OverFlow-ISR ein. Für das Einlesen der RC-Signale müsste die ISR dann etwa so aussehen:


// Globale Variablen
volatile uint8_t rc_input_pwr, rc_input_dir;

ISR (TIMER1_OVF_vect)
{
static uint16_t rc_temp_pwr=0;
static uint16_t rc_temp_dir=0;

if (PINC & 1) rc_temp_dir++; else
if (rc_temp_dir) { rc_input_dir=rc_temp_dir-1; rc_temp_dir=0; }
if (PINC & 2) rc_temp_pwr++; else
if (rc_temp_pwr) { rc_input_pwr=rc_temp_pwr-1; rc_temp_pwr=0; }
}
Vorsichtshalber sollte man volatile verwenden.

Die eingelesenen Werte sind so zwar deulich kleiner (ca. 1/5), aber zur Ansteuerung sollte es reichen. Die Formel zur Verteilung der Werte auf beide Antriebe passt dann natürlich auch nicht mehr, aber die war auch nicht besonders gut ;)

Der linke Antrieb meines RP6 lief damals nur, wenn ich den Motortreiberbaustein angewärmt (anhauchen oder ohne Motorüberwachung warmfahren) hatte. Den Fehler, der da dahintersteckt, hatte ich nie gefunden. Zur Zeit funktioniert das aber auch ohne vorwärmen problemlos.

Gruß

mic

_|Alex|_
10.02.2011, 17:41
Beim Anschluß muss selbstverständlich auch die Minus-Leitung des RC-Empfängers mit dem GND des RP6 verbunden sein!

Ich hatte den Emfänger mit den passenden Akkus Betrieben also muss +/- am Emfänger Ausgang auch mit dem RP6 Verbinden?

radbruch
10.02.2011, 18:41
Wenn du den Empfänger mit eigenen Akkus versorgst, dann darf/muss nur Minus vom Empfänger mit dem GND des RP6 verbunden sein. Auf keinen Fall darf man 5V vom RP6 mit zusätzlichen Akkus verbinden!

Ich versorge meinen Empfänger mit den 5V des RP6 (Vdd ist am XBUS Pin 3 und 5, GND ist Pin 1, 2 und 14).

_|Alex|_
10.02.2011, 19:08
Ich hatte eigentlich Meinen Emfänger komplette mit eigenem Akku verbundennur irgendwie kommt kein Signal am RP6 an.

/Edit ich werde es nochmal mit der 5V Versorgunsspannung versuchen.

sirewgenij
24.06.2012, 13:23
Guten Tag. Ich finde dein Projekt einfach klasse.
Da ich komplett Anfänger bin (studiere 2 Wochen et-totorials.de mit Keil Programm), schafe ich nicht mit notepad++ hex Datei erstellen.
Mit welcher Programm arbeitet man am besten mit RP6?
Vielen Dank, eugen

sirewgenij
25.06.2012, 19:59
Hallo

Davon habe ich schon immer geträumt, aber rein mechanisch (mit lego oder fischertechnik..) hat das nie funktioniert:

http://img.youtube.com/vi/SZ3aWmsqfFQ/2.jpg (http://www.youtube.com/watch?v=SZ3aWmsqfFQ)
http://www.youtube.com/watch?v=SZ3aWmsqfFQ

Nach vielen Versuchen kann ich nun sagen, dass die Fertigungstoleranzen meiner Bio-Dominosteine absolut unakzeptabel sind. Ich vermute, die werden aus massivem Holz rausgebissen. Ich werde dem Hersteller/Vertrieb mal eine Kopie der Videos senden...

Beim Aussortieren der "schräg" gesägten Steine:

http://img.youtube.com/vi/6RqBD0XeheQ/2.jpg (http://www.youtube.com/watch?v=6RqBD0XeheQ) http://img.youtube.com/vi/DcgoIOig_Mk/1.jpg (http://www.youtube.com/watch?v=DcgoIOig_Mk)
http://www.youtube.com/watch?v=6RqBD0XeheQ
http://www.youtube.com/watch?v=DcgoIOig_Mk

Das Programm auf Basis meiner Mini-Lib:

// Domino Day für den RP6 16.11.07 mic

#include "rblib.h"
#include "rblib.c"

uint8_t y, z;

ISR(TIMER0_COMP_vect)
{
static uint16_t count=0;
//if(count>x) PORTA &= ~16; else PORTA |= 16; // E_INT1 (Pin8)
if(count>y) PORTC &= ~1; else PORTC |= 1; // SCL (Pin10)
if(count>z) PORTC &= ~2; else PORTC |= 2; // SDA (Pin12)
if(count<1000)count++; else count=0;
}
void servo_init(void)
{
//DDRA |= 16; // E_INT1 als Ausgang
DDRC |= 3; // SCL und SDA als Ausgang

TCCR0 = (0 << WGM00) | (1 << WGM01); // CTC-Mode
TCCR0 |= (0 << COM00) | (0 << COM01); // ohne OCR-Pin
TCCR0 |= (0 << CS02) | (1 << CS01) | (0 << CS00); // prescaler /8
TIMSK = (1 << OCIE0); // Interrupt ein
OCR0 = 9; // 100kHz?
}
int main(void)
{
rblib_init();
servo_init();

setLEDs(0b1001);
setMotorDir(FWD,FWD);
setMotorPWM(0,0);
z=225;
y=100;
delay(255);

while(1){
y=161; // hoch
delay(100);
z=211; // greifen
delay(50);
y=45; // runter
delay(50);
setMotorDir(BWD,BWD); // zurück
setMotorPWM(50,50);
delay(50);
setMotorPWM(0,0);
delay(50);
z=202; // loslassen
delay(150);
z=195; // auf Abstand
delay(50);
setMotorDir(FWD,FWD); // vor
setMotorPWM(50,50);
delay(100);
setMotorPWM(0,0);
}

return 0;
}

Doku des Greifers folgt noch

Gruß

mic

Hallo radbruch.
Ich hab Programm (erstes versuch mit Greifarm für Domino. Seite 1) und "rblib.h"
"rblib.c mit AVR Studio 4 ein hex datei erstellt. Hat ohne Problemen gelaufen. Dann wollte ich RP6 mit RP6Loader Programm an mein RP6 übertagen. Aber ergent wie funktionier das Programm nicht. RP6 macht lauter Gerausche und bleibt stehen, macht Garnichts. Wo kann das liegen, mache ich was falsch? Bitte um antwort. bin voll verzweifelt. Vielen Dank. Mit freundlichen grüssen eugen

radbruch
30.12.2013, 20:10
Zufällig drübergestolpert:

https://i1.ytimg.com/vi/QIaGuxZCkYM/mqdefault.jpg (https://www.youtube.com/watch?v=QIaGuxZCkYM) https://i1.ytimg.com/vi/lW20XR3aCAA/mqdefault.jpg (https://www.youtube.com/watch?v=lW20XR3aCAA)

Sehr hübsch :)

Dirk
30.12.2013, 20:56
Hi Radbruch,

das 2. Bild kenne ich, das ist das Projekt der Rudolf-Diesel-Fachschule Nürnberg, das ich hier (http://www.rn-wissen.de/index.php/RP6_-_Programmierung#Schule.2C_Lehre_und_Ausbildung) (Projektarbeiten 2011/12) verlinkt habe.

Kannst du sagen, woher das 1. Bild stammt? Sieht auch interessant aus (natürlich nicht im Mindesten so interessant, wie deine Umsetzung!). ;)