PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Projekt: Open Source Library / Firmware für RN- Motor Boards



fwallenwein
01.11.2004, 22:27
Hallo,

in einem anderen Thread ist die Idee aufgekommen eine Open Source Treibersoftware Library für RN-Control Boards aufzubauen.

Frank hatte geschrieben


ja, gegen so eine zusätzliche OpenSourceLösung für RN-Motor und vielleicht auch für andere zukünftige intelligente Motorboards, hätte ich auch nix.

Finde ich ne gut Idee.
Ich würde mir gerne die RN-Motor Software ansehen und anfangen sie in C zu portieren.
Und für die anderen RN-Board's Funktionen sollten wir auch ne Library zustammenstellen - find ich.


Gruss
Frank

darkscout
01.11.2004, 23:04
Ich bin auf jeden Fall dabei...
Habe eine RN-Motor Bibliothek mit Inline-Assembler I2C
und ein paar zeilen Code für RN-Control.

Hat vielleicht irgendwer ein CVS am laufen ?!

fwallenwein
02.11.2004, 00:14
Ich habe leider kein CVS am laufen.
Kann man das nicht hier in diesem Forum irgendwie hinterlegen ?
Dann könnten wir mal unsere bisherige Arbeit hinterlegen und die anderen können es sich anschauen.
Wenn wir das gesehen haben, dann sollten wir uns über Schnittstellenknventionen einigen.

Gruss
Frank

Frank
02.11.2004, 02:18
Hi, ihr könntet ja diesen Thread zum Austausch der Versionen nutzen. Halt als Anhang posten. Kann ja mit Edit immer aktuallisiert werden.

Dei RN-Motor Quellcode rücke ich derzeit allerdings noch nicht raus ;-), will ja noch ein paar IC´s verkaufen bevor Eure Version fertig ist. Bin ja selbst gespannt wie Eure alternative Software aussieht.
Das Betriebsystem könntet ihr also komplett neu programmieren. Als Basis könntet ihr ja Doku mit Befehlsübersicht und Schaltplan nutzen. Das sollte reichen, ansonsten käme ja letzlich auch nur eine Kopie in C raus.

Wäre sicher gut wenn die Software RN-Motor und ähnliche Motorboards, vielleicht auch Stupsi´s etc. unterstützen würde. Wenn man das duch einige Direktiven anpassen könnte wäre es ne feine Sache.
Wichtig wäre auch ein Befehlsstandard für I2C und RS232.

Gruß Frank

Dino Dieter
04.11.2004, 23:06
Hallo Frank

Habe mir gerade mal dein RS232 Protokoll angeschaut. Wie gehst du bei der Auswertung vor, da ja unterschiedlich lange Datensätze übertragen werden.

Wertest du nach dem Empfang der Startbedingung ( #rm ) den Befehlscode aus, zur Ermittlung der zu empfangen Bytes, oder hast du eine andere Lösung gewählt.

Finde im Moment nicht so den richtigen Einstieg. Habe vor, das Protokoll für Stupsi seine Steuerung zu übernehmen, wenn er nichts dagegen hat. Ist ja noch ausbau fähig.

MFG
Dieter

Frank
04.11.2004, 23:59
Hi,
ja, ich werte einzelne Zeichen aus und warte bis #rm kommt und werte danach den Befehl mit select case Anweisung aus. Dort kann man sich ne Unterroutine basteln die dann die gewünschte Anzahl von Parametern in ein Array holt. Jeder Befehl weiß ja wieviel Parameter er braucht.
Ist ein Parameter falsch, gehts gleich wieder ab zum Anfang "#rm" Warteschleife.
Beim nächsten mal würde ich vielleicht gleich noch ein CRC-Prüfbyte mitschicken. Da müssten die Befehle zwar über eine Subroutine vom Anwender verschickt werden (muß ja Prüfbyte berechnet werden), aber dafür wäre es dann auch 100% sicher. CRC-Funktionen gibts auch in Bascom. man könnte das Protokoll auch so schreiben das der Befehl automatisch wiederholt wird wenn er nicht richtig verstanden wurde.

Das Protokoll von Stupsi´s Steuerung kenn ich garnicht, hat er dazu was gepostet?

Dino Dieter
09.11.2004, 23:06
Hallo

Besteht noch Interesse an einer Ansteuerung des RN Motor Boards in C.
Oder hat vielleicht schon einer angefangen ??

MFG
Dieter

Frank
10.11.2004, 07:40
Hi,
wie wäre es wenn du die Getriebemotorsteuerung angehst, da könnte ich meine Software dafür erst mal zurückstellen wenn du schon was anfängst. Hab ja bislang nur die Schrittmotorvariante programmiert.
Wäre nur schön wenn die Software wahlweise 2 oder 4 Motoren berücksichtigt, das kann man mit Jumpern ja auf dem Board hin bekommen. Schaltplan hast du sicher schon angeschaut

Gruß Frank

Dino Dieter
10.11.2004, 08:18
Hallo Frank

Finde nur Daten zu dem Getriebemotorsteuerung im Shop. und den Schaltpülan kann ich schlecht erkennen.
Wenn du da was besseres hättest, wäre es gut. Ich schau mir die Sache dann mal an.

MFG
Dieter

Frank
10.11.2004, 08:29
Der Schaltplan ist hier in Doku drin. Die findest du auf diese Seite (siehe Disketten-Symbol):
http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=65&products_id=16

Das ist ein Universalboard, das kann man per Software auch in Getriebevariante wandeln!

Hier noch etwas Größer als Anhang

Dino Dieter
10.11.2004, 12:24
Hallo

OK. Ich fange mal an.
Hast du für die Getriebeversion schon ein Protokoll vorgesehen ? Einen Großteil kann man ja aus der RS232 Version übernehmen. Oder hast noch was spezielles im Hinterkopf ?

MFG
Dieter

Frank
10.11.2004, 18:50
Hi,
ich hab da noch nicht begonnen, du kannst das machen wie du es für sinnvoll hälst.
Ich denke es wäre gut wenn man halt alle 4 Motoren völlig unabgängig steuern kann, vermutlich mußt du da áls Motorparameter vier BIT´s nehmen. So könnte man einzelne Motoren in bestimmte rKombination ein und ausschalten usw.
Abe rvielleicht hast du ja auch bessere Idee.

Strombegrenzung würde ich noch einbauen, also per Timer den Motorstom messen und eventuell PWM im Hintergrund regeln.

Ansonsten denke ich an das übliche, Befehle für:

START
Richtung
STOP (Spannung so anlegen das Motor bremst)
AUS (Motor aus)

Wenn Du willst und genug platz hast, kannst du ja noch versuchen Befehle zu integrieren wie:
Drehe Links
Drehe Rechts

Man könnte auch zwei Motoren im Parallelmodus betreiben.

Dir fällt sicher genug ein. Vielleicht solltest du Befehle vorher hier auflisten wenn du soweit bist, dann können andere auch ihren Senf zu geben und auch Stupsi was zu sagen

Wäre ja gut wenn es letzlich irgendwann etwas einheitlich wird

Dino Dieter
10.11.2004, 21:06
Hallo Frank

Besteht die Möglichkeit, das du mir die Tabelle mit den RS232 Befehlen, Seite 5 bis 7 der Doku , als Datei zukommen lässt ?

Dann kann ich die Befehle darin direkt eintragen und brauche die Tabelle nicht nochmal zu machen.

Spart Dir ja auch Arbeit später in der Doku. =P~

MFG
Dieter

Frank
11.11.2004, 07:59
Ja ich bin ja nicht so ;-) Poste es nachher

Frank
11.11.2004, 09:06
So hier die gewünschte WORD Datei mit den RS232 befehlen für die Schrittmotorsteuerung RN-MOTOR ST RS232

http://www.robotikhardware.de/bilder/rnmotormini.gif

Allerdings für die Getriebemotor Ansteuerung wird dir das wenig helfen, da sind die Befehle doch etwas anders.
Du mußt dich auch nicht an die Befehle halten, du kannst durchaus ein neues Konzept entwickeln wenn du es für sinnvoller hälst.


Hier nochmal eine schnelle Übersicht der Schrittmotorbefehle:



'#rm i x y Motor maximaler Strom x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren Y = (Milliampere / 10)
' Beispiel : Y = 150 Bedeutet 1,5A Oder Y = 20 Bedeutet 200ma
'#rm v y Referenzspannung des Controllers (normal 2.5 und muss nicht geändert werden)
' Beispiel: y=241 bedeutet 2,41 V
'#rm s x Motor stopp (Haltespannung bleibt ein) x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren Stopp
'#rm d x y Motor Drehrichtung x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren y=0=Links rum y=1 rechts rum
'#rm z x yl yh Motor genau y Schritte bewegen x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren
'y wird in High und Low Byte übertragen
'#rm e x Motor endlose Schritte bewegen bis Stop Befehl kommt x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren
'#rm p x Übermittelt wieviel Schritte der Motor seit letzten Stop/Aus oder Drehrichtungwechel gefahren ist x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren
'#rm m x Motor einen einzigen Schritt bewegen x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren
'#rm g x y Motor Schrittgeschwindigkeit x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren Y = 1 bis 255
'#rm a x Motor ganz ausschalten x=0 Linker Motor x=1 Rechte Motor x2= Alle Motoren Stopp
'#rm o x Motor ein und init x=0 Linker Motor x=1 Rechte Motor
'#rm t Konfiguration und Testwerte werden über RS232 ausgegeben

Vor längerem hatte ich mir schon mal ein paar erste Getriebemotorbefehle ausgedacht, kam aber dann noch nicht dazu mehr zu machen. Vielleicht hilft es dir als Anregung:



'Befehle im Getriebemodusbetrieb
'#rm v y Referenzspannung des Controllers (normal 2.5 und muss nicht geändert werden)
' Beispiel: y=241 bedeutet 2,41 V
'#rm o x Motor ein und init X=Binärzahl, die unteren 4 Bits bestimmen die Motoren
' X = &B0001 Linker Motor einschalten
' X = &B0010 Rechten Motor einschalten
' X = &B0100 Dritten Motor (Links B) einschalten
' X = &B1000 Vierten Motor (Rechts B) einschalten
' auch Kombinationen sind möglich, Beispiel:
' X = &B1111 Alle Motoren einschalten
' X = &B1100 Motor 3 und 4 einschalten
' ... usw.

'#rm a x Motor ausschalten X=Binärzahl, die unteren 4 Bits bestimmen die Motoren
' X = &B0001 Linker Motor ausschalten
' X = &B0010 Rechten Motor ausschalten
' X = &B0100 Dritten Motor (Links B) ausschalten
' X = &B1000 Vierten Motor (Rechts B) ausschalten
' auch Kombinationen sind möglich, Beispiel:
' X = &B1111 Alle Motoren ausschalten
' X = &B1100 Motor 3 und 4 ausschalten
' ... usw.

'#rm g x y Motor Geschwindigkeit X=Binärzahl, die unteren 4 Bits bestimmen die Motoren
' X = &B0001 Linker Motor
' X = &B0010 Rechten Motor
' X = &B0100 Dritten Motor (Links B)
' X = &B1000 Vierten Motor (Rechts B)
' auch Kombinationen sind möglich, Beispiel:
' X = &B1111 Alle Motoren
' X = &B1100 Motor 3 und 4
' ... usw.
' Y = Geschwindigkeit 1 bis 255

'#rm d x y Motor Drehrichtung X=Binärzahl, die unteren 4 Bits bestimmen die Motoren
' X = &B0001 Linker Motor
' X = &B0010 Rechten Motor
' X = &B0100 Dritten Motor (Links B)
' X = &B1000 Vierten Motor (Rechts B)
' auch Kombinationen sind möglich, Beispiel:
' X = &B1111 Alle Motoren
' X = &B1100 Motor 3 und 4
' ... usw.
' Y =Drehrichtung 0 = Links herum Y=1 Rechts herum


'#rm r d Roboter auf der Stelle drehen Y =Drehrichtung 0 = Links herum Y=1 Rechts herum
' Dieser Befehl erleichtert das drehen von Robotern. Die Richtung des
' linken und rechten Motors wird automatisch gegensätzlich gewählt um die gewünschte
' Drehung zu erreichen

Dino Dieter
11.11.2004, 12:11
Hallo Frank

Danke für die Datei, macht die Sache doch viel einfacher. =P~

Mir wäre es lieb, wenn wir beim Parameter 1 bei 2 Bits bleiben könnten, da ich
im Programm den Befehlscode mit dem 1. Parameter verknüpfe und in einem Byte speichere. Ich erreiche damit eine leichtere und schnellere Auswertung über select case.

Wir hätten dann für den Befehlscode die Zeichen "A bis Z " und "a bis z" zur Verfügung, plus halt die 4 Möglichkeiten von Parameter 1.

Hier mal mein erster Vorschlag zur Ansteuerung.

MFG
Dieter

Frank
11.11.2004, 13:13
Hi
Die Befehle J und Y überscheiden sich!
Und Befehl zum stoppen und zum ausschalten braucht man doch bei Getriebemotoren nicht. Höchstens stoppen mit Bremse und stoppen ohne Bremse.
Zudem unterstützt du auf diese Weise keine 4 Motoren sondern leider nur 2 x 2 parallel. Das Board könnte aber auch vier Motoren völlig unabhängig voneinander steuern, wäre schade wenn man das nicht nutzen kann.
Daher die meine Idee mit den Bits - auch nur ein Byte. Es wäre universeller, denn man könnte es leicht auch auf 8 Motoren erweitern.

Ab besten ist immer wenn erst man mit Umsetzung anfängt, da merkt man schnell wo es noch harkt. Ich würde nicht so stark an meiner Schrittmotor Syntax festhalten - die ist zwar für Schrittmotoren gut aber weniger für Getriebemotoren.

Gruß Frank

Dino Dieter
11.11.2004, 14:31
Hallo Frank


Die Befehle J und Y überscheiden sich!

kann ich nicht erkennen


Und Befehl zum stoppen und zum ausschalten braucht man doch bei Getriebemotoren nicht. Höchstens stoppen mit Bremse und stoppen ohne Bremse.

War auch so gedacht, etwas unglücklich rüber gekommen


Zudem unterstützt du auf diese Weise keine 4 Motoren sondern leider nur 2 x 2 parallel. Das Board könnte aber auch vier Motoren völlig unabhängig voneinander steuern, wäre schade wenn man das nicht nutzen kann.

Sehe ich anderes. Das Board kann keine 4 Motoren völlig unabhängig steuern, da ich nur 2 PWM Kanäle habe. Motor links und Motor 3 laufen immer mit der selben Geschwindigkeit. Auch kann ich nicht Motor links ohne Bremse stoppen und Motor 3 weiterlaufen lassen.

Oder übersehe ich da was grundlegendes. Du schaltest doch mit JP1 die PWM auf Enable A und Enable B ?

MFG
Dieter

Frank
11.11.2004, 15:44
Hi Dieter,

doch doch, es ginge auch mit 4 Motoren - alles eine Sache der Software. Man kann Jumper JP2 und JP1 so umstellen, das beide Enable Leitungen jedes Motors auf unterschiedliche Ports gehen.
Bei Motor Rechts wäre das dann Beispielsweise Port PB2 PWM und Port PB4 (hier werden die Programmierports mit benutzt).
Das ist zwar kein PWM Port, aber man könnte den Motor dann unabhängig steuern, nur nicht die Geschwindigkeit regeln.
Alternativ könnte man das PWM Signal aus softwaremäßig mit Interrupt generieren, dann könnte man auch bei alen 4 Motoren geschwindigkeit unterschiedlich wählen. Ich hab mir da schon wa sbei der Belegung bei gedacht ;-)

Aber ich halt mich jetzt mal hier in dem Thread zurück - das Open Source Projekt ist Eurer Projekt wurde von Euch fwallenwein, darkscout, Dino Dieter ins Leben gerufen - also könnt ihr es auch nach euren Vorstellungen umsetzen und Euch auch etwas mit Programmierproblemen plagen :-)

Gruß Frank

Dino Dieter
11.11.2004, 18:23
Hallo Frank

Ashe über mein Haupt.

Du hast natürlich Recht, das alle 4 Motoren unabhängig gesteuert werden können. Habe die Funktion von JP1 und JP2 nicht richtig gedeutet.

Werde jetzt mal das Protokoll über arbeiten und die Software ändern auf 4 PWM Kanäle. Wenn die Hardware das kann, sollte die Software das auch unterstützen. =P~

In diesem Sinne

MFG
Dieter

Dino Dieter
11.11.2004, 20:30
Hallo

Habe das Protokoll mal überarbeitet.

Bin für jede Anregung dankbar. =P~

MFG
Dieter

Dino Dieter
13.11.2004, 23:10
Hallo

Wollte mal eben kurz über den Stand der Software berichten.

Die Software ist zu 85 % fertig. Was im Moment noch fehlt, ist das
testen der Software auf der Platine. Da meine Platine erst am Montag kommen wird, folgt dieser Teil ab Mitte nächste Woche. Vor allem die Strombegrenzung muß ich noch auf Herz und Nieren testen.

Alle 4 Motoren können jetzt völlig unabhängig von einander angesteuert werden. Folgende Befehle sind eingebaut. AN / AUS ( ohne Bremse ) / Geschwindigkeit / STOPP ( mit Bremse) / Drehen .

Wenn einem noch weitere sinnvolle Befehle einfallen, lasst es mich wissen.

Das Programm belegt im Moment ungefähr 2100 Bytes des uC, ist also noch reichlich Platz für Erweiterungen .

Ein PC Programm zur Ansteuerung und zum testen der Hardware habe ich, nach dem Modell von Frank, auch in Arbeit.

MFG
Dieter

PS: Da die Software noch im Beta Status ist, lege ich sie noch nicht zum Download bereit. Wer sie vorher haben möcht, kann sich ja mal melden.

transistor
14.11.2004, 11:27
Klingt vielversprechend, mach weiter so. Man könnte noch einen Befehl einbauen der den Roboter über einen größeren Wendekreis dreht

Dino Dieter
22.11.2004, 23:42
Hallo

Habe heute meine Platine bekommen und die ersten Tests der Software sehen gut aus. Muß die Strombegrenzung noch etwas verfeinern und die Software etwas aufräumen. Schätze mal ab dem Wochenende ist sie soweit fertig.

@ Frank

Besteht die Möglichkeit, das du mir etwas von der Logik der LED mitteilst, z.B. beim Startvorgang , oder was du beim Start noch so prüfst ? . Ich habe die 4 PWM Kanäle jetzt alle auf 7,8 KHz laufen, hoffe es ist bei Dir ähnlich. Ein Mega48 hätte auch ganz gut gepasst, mit seinen 6 PWM Kanälen. Aber geht ja auch so.

In diesem Sinne
Dieter

Frank
23.11.2004, 08:36
Hi Dieter,

fein das es voran geht.

Zur LED ist zu sagen das man die Funktion ja beliebig nutzen kann. Ich hab es so gemacht das die bei RESET einafch ein paar Sekunden schnell blinkt.
Ansonsten leuchtet Sie nur wenn der eingestellte Strom nicht erreicht wird. Das ist aber nur bei Schrittmotoren sinnvoll.

Ich nutze eine PWM-Frequenz von 15 khz, das RC-Glied ist dafür ausgelegt. Aber in der Praxis dürfte wohl auch 7,8 Mhz noch völlig ausreichen.
Da ich ja Schittmotoren Firmware geschrieben hab, muß ich beim Start noch Strom regeln - das fällt bei Getriebemotoren sicher alles weg.

Mega48 Parameter hab ich garnicht so im Kopf. Ach es gibt ja so viele feine AVR´s, aber man hat eben doch immer so seine Lieblinge an die man sich schon etwas gewöhnt hat.


Gruß Frank

darkscout
23.11.2004, 17:50
Ich hatte mir die Struktur ca. so vorgestellt...

Kernmodule für die jeweiligen Motorentypen (Getriebe, Schritt)

Module zur Befehlserkennung (RN-Motor-Befehle oder andere)
Welche I2C oder RS232 Funktionen benutzen die auch als Module zusammengefaßt werden.

Wenn das läuft kann sich jeden (wenn er mag) einen Befehls-Dialekt nach Wahl schaffen.

I2C oder RS232 plus Befehlssatz werden per Makefile ausgewählt.

Hellmut
23.11.2004, 22:39
Hallo

Da Frank auch davon sprach die Software fuer das Board vom stupsi einzusetzen wollte ich bitten vorzusehen Impulse eines Inkrementalwertgebers vorzusehen. Ich setze in meinem "schwimmenden Roboter" die Kombination Motor, Inkrementalwertgeber und Fahrtregler ein um ein Winden, bzw. Servo equivalente Funktion zu implementieren die dank der Impulse Positionen anfahren kann.

darkscout
23.11.2004, 23:19
Hui - dann habe ich was falsch verstanden - ich dachte stupsi wäre ein sehr ähnliches design (kenne es leider nicht)
Sollte größe abweichungen da sein - so wird das natürlich ein arges Problem eine einheitliche Firmware zu bauen...

Frank
23.11.2004, 23:41
Hi,

da ich auch noch ein zweites stärkeres Motorboard für Scheibenwischermotoren bauen wollte, haben Stupsi und ich jetzt unsere Konzeption zusammengelegt.
Im Augenblick sind wir in den letzten Zügen und gleichen noch die Bauteile genau ab, damit dann auch Platine, Bauteile und eventuell ein Fertigboard angeboten werden kann.
Das Board wird wirklich gut.

Natürlich wäre es schön wenn die Open-Source Software dann beide Konzepte unterstützen würde. Die Ansteuerung ist im Grunde auch sehr ähnlich, sind zwar andere Ports etc. aber ansonsten garnicht so viel anders. Zusätzlich sind nur noch ein paar weitere Schnittstellen vür Drehgeber etc. vorgesehen.
Aber mehr wird derzeit noch nicht verraten - erst wenn die Prototypen getestet sind.

RN-Motor wird also dann für 2-4 Motoren bis jeweis 2 A sein und das neue Stupsi Board RN-Power wird dann für 2 sehr große Motoren mit mehr als 2A sein.

Sinnvoll wäre es vor allem wenn man erst mal einheitliche Befehle definiert. Die Software Implementation wird man doch dann etwas individueller machen müssen. Aber das Prinzip kann man sicher übernehmen.

Gruß Frank

Dino Dieter
28.11.2004, 17:14
Hallo

Hier mal eine erste lauffähige Getriebemotor Version für das RN-MOTOR BOARD.

Achtung: Die Version ist noch eine Beta Version und noch nicht vollständig getestet.

Für auftretende Schäden übernehme ich keine Haftung.

Gesteuert wird die Version wie die Schrittmotoren Version, ebenfalls über
Rs232 Kommandos, die man der Tabelle entnehmen kann.

Hier die ersten Features:
Es können 4 Motoren völlig unabhängig gesteuert werden.

Motor 1 + 2 haben eine Strombegrenzung und eine Stromregelung.

Speed in 255 Schritten einstellbar

3 Baudraten werden angeboten. (9600 Standard), 19200 Baud und 38400 Baud

Debugmodus zum Fehler finden (noch nicht vollständig implementiert )

Kleines Testprogramm (noch nicht vollständig implementiert )

Sleep Modus, Stromaufnahme des Board sinkt auf ca 20 mA. Wecken mit kurzem LOW Impuls an JP "wecken" oder mit Reset.



Offen:

Überprüfen der Stromregelung bis 2 A.

Kurzschlußverhalten

Einbau des WDT

Optimierung der Stromregelung ( höhere Abtastrate des AD Wandlers bis 1 Mhz)

Fertig stellen der Dokumentation

Beschreibung des Programmablaufes

Funktion der LED festlegen

Anpassen der Stromwerte


Über Kritik oder Anregung würde ich mich freuen.

MFG
Dieter

Frank
30.11.2004, 01:37
Na das hört sich ja gut an. Leider fehlt mir derzeit etwas die Zeit zum erproben. Gib mal Info wenn du alles getestet hast, insbesondere Strombegrenzung. Wenn die Software-Strombegrenzung dann sicher genug ist, dann kann ich probehalber mal meinen Scheibenwischerbot dran hängen (mal schaun wieviel der bei max. 2A leistet).
Wenn die Software dann doch noch einen Fehler hat, so sollten Rauchzeichen dies sicher ermitteln können ;-)

Gruß frank

daiyama
31.01.2005, 22:50
Ich habe zwei Fragen zu RN-Motor. Wie weit ist die Getriebemotoransteuerung? Kann man nun 2 oder 4 Motoren steuern?
Auf robotikhardware.de ist immer nur die Rede von 2 Motoren.
daiyama

Dino Dieter
31.01.2005, 23:11
Hallo

Mit dem RN Motor Board kannst du 2 Schrittmotoren, oder mit der anderen Firmware 4 Getriebemotoren steuern.

Die Firmware weiter oben läuft soweit, jedoch ist die Stromregelung noch nicht richtig getestet. Mir fehlt im Moment die Zeit, da ich in einem anderen
Projekt stecke.

Teste diese mal und berichte. O:)

mfg
DIeter

daiyama
01.02.2005, 08:38
Hallo Dieter
ich arbeite momentan mit dem RNBFRA1.2 und 2 Getriebemotoren. Meine Frage war interessehalber, weil ich mein nächstes Projekt evtl. mit dem RN-Motor Board gestalten wollte.
Ich stehe Steppermotoren immer noch etwas skeptisch gegenüber (kein Getriebe, fressen viel Strom...)
Grüsse
daiyama

Hellmut
09.02.2005, 22:13
Hallo Dieter

Wo stehst du jetzt mit der Software?

Hellmut

Dino Dieter
10.02.2005, 23:22
Hallo Helmut

Habe jetzt wieder etwas mehr Zeit und wollte dieTage mal die Stromregelung überarbeiten. Dazu muß ich mir aber erstmal eine geeignete Testumgebung aufbauen.

Zudem muß die PC Steuerungssoftware noch ein wenig überarbeitet werden.

Die Version oben läuft ja soweit und durch die geringe Nachfrage ist
das Projekt ein wenig ins stocken gekommen.


Aber es geht weiter.


Gruß
Dieter

fwallenwein
03.04.2005, 17:05
Hallo Dieter,

ich war in den letzten 3 Monaten auf Reisen und habe deshalb nicht mitbekommen wie es mit der Software Library in der Zwischenzeit weitergegangen ist. Hier im Forum habe ich auch nichts neues gefunden. Kannst Du uns kurz "auf den neuesten Stand bringen" ?

Hast Du eine fertige Software Version oder kann man Dir noch bei irgenwas helfen ?

Danke und Gruss
Frank

Dino Dieter
03.04.2005, 17:21
Hallo Frank

Hilfe ist immer Willkommen.

Stand. An der Software oben habe ich im Moment nicht weiter gearbeitet, da ich eine andere Firmware schreibe. Alle Module der neuen Software können aber auif die alte Firmware übertragen werden.

Was mir immer noch fehlt, ist eine gute Strombegrenzung der Motoren. Bin gerade dabei, muß aber immer noch Hardware zum testen aufbauen.

Was weiterhin fehlt, ist das auslesen von Servosignalen einer herkömmlichen Fernbedienung aus dem Modellbau, über Interrupts. Habe in der Richtung keine Hardware zum testen.

Wie gesagt, hilfe ist immer willkommen.

Gruß
Dieter

churchi
03.04.2005, 18:30
Wegen dem Auslesen von Servosignalen von einer Fernsteuerung kann ich möglicherweise helfen.

Der angehängte Code zeigt den Ausschlag auf 8 Leds am PortA an.
Als Eingang wurde PORTB 0 genommen.
Leider hatte ich die Fernsteuerung nur für 1 Nachmittag zur Verfügung, also ist diese noch weit von dem entfernt was man als perfekt und schön programmiert bezeichnen würde ;)

Es wird schon eine Selbstkalibrierung durchgeführt (herausfinden des maximums und minimums)

Der Code ist für Codevision geschrieben, dürfte aber ohne großes Ändern auch auf AVR-GCC funktionieren.
Es wurde ein ATMega163 mit 4Mhz verwendet.

Wenn ich wieder eine Fernsteuerung zur Verfügung habe werde ich diesen Code weiter programmieren - bei Bedarf stelle ich ihn dann hier rein.




#include <mega163.h>



unsigned int counter=0;
unsigned int dauer=0;
unsigned int min=65535;
unsigned int max=0;
unsigned float schritt=0;
unsigned int wert[8];
unsigned int i=0;



interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=250;
if(PINB.0 == 1)
{
counter++;
}
if((counter > 0) && (PINB.0 == 0))
{
dauer = counter;
counter = 0;
}
}



void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0xFF;
DDRB=0x00;
TCCR0=0x01;
TCNT0=0x00;
TIMSK=0x01;
#asm("sei")
for(i=0;i<8;i++)
{
wert[i]=0;
}
while (1)
{
max = dauer;
}
if(dauer < min)
{
min = dauer;
}
schritt = ((float)max-(float)min)/8;

wert[0] = schritt;
wert[1] = wert[0] + schritt;
wert[2] = wert[1] + schritt;
wert[3] = wert[2] + schritt;
wert[4] = wert[3] + schritt;
wert[5] = wert[4] + schritt;
wert[6] = wert[5] + schritt;
wert[7] = wert[6] + schritt;



if(dauer > wert[0])
{
PORTA.7 = 1;
}
else
{
PORTA.7 = 0;
}
if(dauer > wert[1])
{
PORTA.6 = 1;
}
else
{
PORTA.6 = 0;
}
if(dauer > wert[2])
{
PORTA.5 = 1;
}
else
{
PORTA.5 = 0;
}
if(dauer > wert[3])
{
PORTA.4 = 1;
}
else
{
PORTA.4 = 0;
}
if(dauer > wert[4])
{
PORTA.3 = 1;
}
else
{
PORTA.3 = 0;
}
if(dauer > wert[5])
{
PORTA.2 = 1;
}
else
{
PORTA.2 = 0;
}
if(dauer > wert[6])
{
PORTA.1 = 1;
}
else
{
PORTA.1 = 0;
}
if(dauer > wert[7])
{
PORTA.0 = 1;
}
else
{
PORTA.0 = 0;
}
};
}

assie17
02.07.2005, 10:39
Hallo,
ist die Software auch rn-power tauglich??

LuK-AS
06.09.2005, 12:52
Hallo zusammen,

meine Frage, hat sich jetzt schon etwas geändert an dem letzten Softwarestand weiter oben? Ist die RN-Motor für Getriebemotoren jetzt fertig geworden oder hängt es noch irgendwo?

Gruesse Clemens

Dino Dieter
07.09.2005, 22:23
Hallo

@assie17

Die Software ist nicht RN Power tauglich. Die Firmeware für RN Power ist zu 87 % fertig.

@LUK AS

Die Software für die Getriebemotoren ist etwas eingeschlafen. Der Stand von oben ist noch aktuell und wird im Momnet nicht weiter entwickelt. Ich plane, große Teile der Firmware vom RN Power auf die Getriebe Version zu übernehmen. Spart viel Arbeit.

Schön wäre es, wenn andere die Software tessten würden und ein Feedback abgeben könnten.

Hilfe ist auch immer gerne gesehen.

MFG Dieter

LuK-AS
07.09.2005, 22:29
Hajooo, helfe gerne beim Testen.

Gruss Clemens

Heiko.Weber
30.10.2006, 20:56
Huhu aufwachen

wurde hier im Verborgenen weitergemacht oder ist das eingeschlafen?

Ich stehe gerade vor der Aufgabe RN-MiniControl als Huckepack RN DualMotor. Kommunikation habe ich mir über I2C (TWI) gedacht.

Wenn jemand interresse hat kann ich ja dann den C-Code posten, allerdings brauche ich ein wenig hilfe beim Ordnen, ich bin noch nicht so der Codercrack :-)


have fun

Heiko