Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: Due Portierung (Achtung: nur experimentell)

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3583

  • redtop
  • redtops Avatar
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 642
  • Dank erhalten: 52
Nur mal zum Verstädniss für mich.

Ich mass also im Datenblatt nachsehen, was das Modul für einen Messbereich hat z.B 10A und das dann
entsprechend ausrechnen ?

Aber warum stehen dann in der config :

int motorSenseRightZero = 0;     // motor right sense zero point (mA=(ADC-zero)/scale)
double motorSenseRightScale = 15.015; // motor right sense scale (mA=(ADC-zero)/scale)
int motorSenseLeftZero  = 0;     // motor left sense zero point (mA=(ADC-zero)/scale)
double motorSenseLeftScale = 15.58; // motor left sense scale  (mA=(ADC-zero)/scale)
int motorRollTimeMax    = 4000;  // max. roll time (ms)

Für motorSense unterschiedliche Werte für Rechts und Links ?

Gruss Stefan

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Das sind keine Rechtschreibfehler, das sind Special effects der Tastatur !

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3595

  • autega
  • autegas Avatar
  • Besucher
  • Besucher
Hallo Stefan,
es stehen dort für rechts und links unterschiedliche Werte damit wir daran erinnert sind, dass die Werte minimal unterschiedlich sind zwischen den einzelnen MC Modulen.

So hier ein Aufruf:
Jeder der schon einen MC 33926 im Einsatz hat kann mal messen wie bei ihm das Verhältnis von PinFB V/A ist.

Dann können wir hoffentlich einen schönen Mittelwert bilden der ausreichend genau für alle funktioniert.

Gruß
Sven

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3596

  • redtop
  • redtops Avatar
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 642
  • Dank erhalten: 52
Hallo Sven,

das ist jetzt klar aber wie werden die Richtigen Werte ermittelt.

Ich messe den tatsächlichen Strom, vergleiche ihn mit der Anzeige und berichtige ihn nach oben oder Unten ?


Ich überleg mir gerade eine Formel dafür.

Gruss Stefan

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Das sind keine Rechtschreibfehler, das sind Special effects der Tastatur !

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3597

  • autega
  • autegas Avatar
  • Besucher
  • Besucher
Hallo Stefan,
hier mal kurz zum nachvollziehen wie die richtigen Werte ermittelt werden können.
Von Grund auf an würde man es so machen:
Spannung am PinFB (MC33926) messen und Strom am entsprechenden Motor.
U_FB=0.15V I_Motor=0.45A V/A=0.15/0.45=0.333

bedeutet jetzt also das wenn 1A fließt am PinFB eine Spannung von 0.333V anliegt.

Jetzt fehlt noch die Bestimmung von motorSenseScale. Dazu einfach die analoge Referenzspannung (Mega 5V, Due 3.3V) durch den oben bestimmten Wert teilen.
Also:
motorSenseScale=5/0.333=15.015

Damit kann jetzt in der Software der korrekte Strom in mA berechnet werden.
Dieser wird jedoch nur intern für Berechnungen benutzt und nach aussen jetzt die aufgenommene Leistung der Motoren in Watt ausgegeben.

Also P=U*I

Dafür wird dann natürlich auch die gemessene Batteriespannung benötigt.

Gruß
Sven

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3676

  • redtop
  • redtops Avatar
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 642
  • Dank erhalten: 52
Hallo,

hab jetzt meinen Mower nochmal Komplett Umgebaut und bei der Gelegenheit, die Due Portierung oder pre1.0
draufgespielt.

Leider leide ich auch unter dem pfodapp Problem, so das nicht darüber machen kann.

In der Konsole erhalte ich folgende Ausgabe :

Signal size=48
ADC3ofs=394
ADC1ofs=0
ADC0ofs=0
ADC5ofs=507
ADC4ofs=848
--------
accOfs=2.95,-17.75,-22.05
accScale=517.90,526.50,514.50
comCalB=0.000000  0.000000  0.000000  comCalA_1=1.000000  0.000000  0.000000  0.000000  1.000000  0.000000  0.000000  0.000000  1.000000  
comDev
-180=0.00
-170=10.00
-160=20.00
-150=30.00
-140=40.00
-130=50.00
-120=60.00
-110=70.00
-100=80.00
-90=90.00
-80=100.00
-70=110.00
-60=120.00
-50=130.00
-40=140.00
-30=150.00
-20=160.00
-10=170.00
0=180.00
10=190.00
20=200.00
30=210.00
40=220.00
50=230.00
60=240.00
70=250.00
80=260.00
90=270.00
100=280.00
110=290.00
120=300.00
130=310.00
140=320.00
150=330.00
160=340.00
170=350.00
--------
gyro calib min=257.00	max=3598.00	ofs=1855.54	noise=4011816.50
gyro calib min=0.00	max=2827.00	ofs=1727.04	noise=397060.31
gyro calib min=514.00	max=3598.00	ofs=1927.50	noise=534891.06
gyro calib min=0.00	max=3084.00	ofs=1711.66	noise=465697.31
gyro calib min=514.00	max=3598.00	ofs=1809.28	noise=381961.62
gyro calib min=-2.00	max=2570.00	ofs=1583.08	noise=477599.71
gyro calib min=257.00	max=2827.00	ofs=1901.80	noise=487308.37
gyro calib min=514.00	max=3084.00	ofs=1788.72	noise=364062.09

nach einem Reset
��hSignal size=48
ADC3ofs=394
ADC1ofs=0
ADC0ofs=0
ADC5ofs=507
ADC4ofs=848
--------
accOfs=2.95,-17.75,-22.05
accScale=517.90,526.50,514.50
comCalB=0.000000  0.000000  0.000000  comCalA_1=1.000000  0.000000  0.000000  0.000000  1.000000  0.000000  0.000000  0.000000  1.000000  
comDev
-180=0.00
-170=10.00
-160=20.00
-150=30.00
-140=40.00
-130=50.00
-120=60.00
-110=70.00
-100=80.00
-90=90.00
-80=100.00
-70=110.00
-60=120.00
-50=130.00
-40=140.00
-30=150.00
-20=160.00
-10=170.00
0=180.00
10=190.00
20=200.00
30=210.00
40=220.00
50=230.00
60=240.00
70=250.00
80=260.00
90=270.00
100=280.00
110=290.00
120=300.00
130=310.00
140=320.00
150=330.00
160=340.00
170=350.00
--------
gyro calib min=-1.00	max=2827.00	ofs=1577.96	noise=2949748.50
gyro calib min=0.00	max=3598.00	ofs=1747.60	noise=448849.25
gyro calib min=257.00	max=2827.00	ofs=1608.82	noise=409768.09
gyro calib min=-1.00	max=2827.00	ofs=1572.82	noise=539367.75
gyro calib min=257.00	max=2827.00	ofs=1829.84	noise=501031.43
gyro calib min=771.00	max=3084.00	ofs=1691.06	noise=399940.09
gyro calib min=0.00	max=2827.00	ofs=1639.52	noise=469866.71
gyro calib min=-2.00	max=3084.00	ofs=1541.96	noise=638427.68
gyro calib min=0.00	max=3341.00	ofs=1649.94	noise=421401.15
gyro calib min=257.00	max=3341.00	ofs=1706.48	noise=383004.93
gyro calib min=-1.00	max=3084.00	ofs=1644.78	noise=458289.68

Er läst sich auch nicht mit der Taste und gibt keine Töne von sich.

Die Anschlüsse hab ich and config.h angepasst und IMU deaktiviert.

Muss erst der Kompass Kalibriert werden ?

Stefan

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Das sind keine Rechtschreibfehler, das sind Special effects der Tastatur !

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3704

  • redtop
  • redtops Avatar
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 642
  • Dank erhalten: 52
Wie ich in der Software gefunden habe, wird die Einstellung ob IMU Aktiv ist übergangen und der Kompass
Kalibriert oder zumindest versucht. Damit die Kalibrierung abgeschlossen ist mus Das Rauschene unter 20 liegen.

Aber wie bekomme ich das hin ?

Hab den Mower heute mehrfach gedreht aber an den Noise Werten ändert sich nicht wirklich was.

Also wie wird der Kompass in der neuen Version Kalibriert.

Und da er bei der Kalibrierung hängt komme ich auch nicht mit pfodapp rein.

Stefan

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Das sind keine Rechtschreibfehler, das sind Special effects der Tastatur !

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3742

  • redtop
  • redtops Avatar
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 642
  • Dank erhalten: 52
Ich hab's gestern erstmal aufgegeben die dev Version zu Installieren. Auf einem Mega bekomme ich das Teil nicht zum Laufen.
Nachdem ich den IMU abgeklemmt habe , bin zwar weiter gekommen, konnte aber auch das Motor Testprog mit "d" nicht aufrufen.
Auch start über den Taster war nicht möglich.

Schade. Ich würde gerne mithelfen. Vielleicht sollte man eine eigene Rubrik für die Portierung einrichten, damit es übersichtlicher bleibt.

Stefan

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Das sind keine Rechtschreibfehler, das sind Special effects der Tastatur !

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3743

  • helldriver
  • helldrivers Avatar
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 294
  • Dank erhalten: 58
Hallo Stefan,
Wie hast du denn das IMU an das Mega angeschlossen?
Ich habe zur Zeit auch die aktuelle SVN ich glaube R25 drauf. Läuft soweit super. Nur bekomme ich das mit dem IMU nicht hin. Hast du das direkt angeschlossen oder wie zuvor über das Nano? Bei beiden Versuchen wird das bei mir nicht erkannt. Auch meine Ladespannung und auch der Ladestrom wird nicht mehr angezeigt.
Dafür muss ich sagen ist das fiepen der Motoren komplett verschwunden bei langsamen Fahrten. Spitze.
Ich denke du hast gesehen, dass der Pin für den Motoranschluss links PWM geändert wurde.
Gruß
Stephan

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Tianchen komplett auf Ardumower umgestellt.
ardumower ver 1.0a7-Azurit-dev
Perimeter V2 - Prinzip über Polaritätswechse mit eine einzige aufrecht (hochkant) stehende Spule mittig
Beta 1 - PCB

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3746

  • nero76
  • nero76s Avatar
  • Offline
  • Administrator
  • Administrator
  • cofounder of www.ardumower.de
  • Beiträge: 2307
  • Dank erhalten: 818
@Stefan: IMU-Code im SVN ist derzeit "broken" - ich habe den Code einfach vom Nano genommen und in eine C++Klasse gesteckt und das war's. Ziel war das es kompiliert. Da müsste noch einiges angepaßt werden bis das wieder läuft...

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PCB1.3 - die Plug&Play Robotik-Plattform für Deinen Rasenroboter mit passender Open Source Software

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3753

  • redtop
  • redtops Avatar
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 642
  • Dank erhalten: 52
Den IMU hatte ich ohne Nano Angeschlossen

Ich hatte auch mal IMU Code der für den Nano ist auf den Mega gespielt ging merkwürdiger Weise auch nicht. Deswegen hatte ich dann den IMU abgeklemmt und lief leider auch nicht.

Ich mach den Mower jetzt erst mal mit "offiziellen " Code fertig und stelle mir was zum testen auf die Basis zusammen.

Stefan

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Das sind keine Rechtschreibfehler, das sind Special effects der Tastatur !

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3798

  • Dietmar
  • Dietmars Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
  • Moin Moin aus Niedersachsen
  • Beiträge: 204
  • Dank erhalten: 17
ich habe heute die letzte Version vom SVN heruntergeladen und versucht diese für den DUE zu kompilieren.

In file included from ardumower.ino:96:
C:\Users\Dietmar\AppData\Local\Temp\build8027438895129430191.tmp\/config.h: In function 'void PCINT2_vect()':
C:\Users\Dietmar\AppData\Local\Temp\build8027438895129430191.tmp\/config.h:173: error: 'A12' was not declared in this scope
C:\Users\Dietmar\AppData\Local\Temp\build8027438895129430191.tmp\/config.h:174: error: 'A13' was not declared in this scope
C:\Users\Dietmar\AppData\Local\Temp\build8027438895129430191.tmp\/config.h:175: error: 'A15' was not declared in this scope
C:\Users\Dietmar\AppData\Local\Temp\build8027438895129430191.tmp\/config.h:176: error: 'A14' was not declared in this scope
C:\Users\Dietmar\AppData\Local\Temp\build8027438895129430191.tmp\/config.h: In function 'void config()':
C:\Users\Dietmar\AppData\Local\Temp\build8027438895129430191.tmp\/config.h:256: error: 'A12' was not declared in this scope
C:\Users\Dietmar\AppData\Local\Temp\build8027438895129430191.tmp\/config.h:258: error: 'A13' was not declared in this scope
C:\Users\Dietmar\AppData\Local\Temp\build8027438895129430191.tmp\/config.h:259: error: 'A15' was not declared in this scope
C:\Users\Dietmar\AppData\Local\Temp\build8027438895129430191.tmp\/config.h:260: error: 'A14' was not declared in this scope

Eigentlich ist alles richtig in der config.h eingetragen und es sollte sehr wohl declared sein.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

„Nemo me impune lacessit.“
(Wahlspruch des schottischen Distelordens)

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3799

  • nero76
  • nero76s Avatar
  • Offline
  • Administrator
  • Administrator
  • cofounder of www.ardumower.de
  • Beiträge: 2307
  • Dank erhalten: 818
@Dietmar: Die Odometrie-Pins wurden so ausgesucht, dass der Mega Interrupts dafür generieren kann (also eine spezielle Interrupt-Funktion aufruft, wenn der Pin seinen Zustand ändert).

Könntest Du den Code für den Due anpassen und dann ins SVN übertragen (SVN commit)?

Idee:
Schau mal ob Du einen passenden Pin an derselben Position am Due findest...
www.tonylabs.com/wp-content/uploads/ardu...e-pinout-diagram.jpg

Der Due kann (anders als der Mega) für jeden Pin einen Interrupt auslösen. Die Konfiguration hierfür kann für den Due (anders als bei den PCINT Pins beim Mega) mit Standard Arduino-Befehlen erfolgen:

arduino.cc/de/Reference/AttachInterrupt

Ansatz z.B.:
  // odometry: enable pin interrupts
  ...
  #ifdef __AVR__  
    // interrupt config for Mega
    PCICR |= (1<<PCIE2);
    PCMSK2 |= (1<<PCINT20);
    PCMSK2 |= (1<<PCINT21);  
    PCMSK2 |= (1<<PCINT22);
    PCMSK2 |= (1<<PCINT23);       
  #else
    // interrupt config for Due
    attachInterrupt ( ... )
  #endif


// odometry signal change interrupt
#ifdef __AVR__  
// interrupt function for Mega
ISR(PCINT2_vect)
{
   ...
}
#else
// interrupt function for Due
....
#endif

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PCB1.3 - die Plug&Play Robotik-Plattform für Deinen Rasenroboter mit passender Open Source Software
Letzte Änderung: von nero76.

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3800

  • Dietmar
  • Dietmars Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
  • Moin Moin aus Niedersachsen
  • Beiträge: 204
  • Dank erhalten: 17
ich kann versuchen daran zuarbeiten, leider verstehe ich das interruptkonzept nicht so ganz.

Hab in meinen Projekten(lange her, Pascal, später Delphi) sowas nie gebraucht.
Die Arbeit hat da ein eventhandler gemacht :cheer:

einige Zeit Später ..... ich verstehe da noch mehr nicht :(

Was soll der Interrupt eigentlich machen? bzw auslösen verändern.

Leider ist der Code schon so komplex geworden, das ich aufgebe diesen zu verstehen.

Ich denke ich reiß den Due aus dem Mower und besorg mir einen Mega. Dann kannst du erst in ruhe eine Stable version für den Mega fertigstellen an deren Fortschritt ich mich wie alle anderen auch erfreuen kann.

Deshalb kannst du mich als schreibendes Mitglied mal aus dem SVNstreichen, dann kann ich auch nicht aus Versehen was überschreiben.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

„Nemo me impune lacessit.“
(Wahlspruch des schottischen Distelordens)
Letzte Änderung: von Dietmar.

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3801

  • nero76
  • nero76s Avatar
  • Offline
  • Administrator
  • Administrator
  • cofounder of www.ardumower.de
  • Beiträge: 2307
  • Dank erhalten: 818
@Dietmar: habe dich ausgetragen - die Idee mit dem Mega zu starten ist vielleicht gar nicht so verkehrt...


Interrupts sind eine "Hardware-Erfindung" - Der Odometrie-Pin gibt für jeden "Tick" (eine Radumdrehung z.B. 1000 Ticks) einen Hi-Lo-Puls aus. Nun könnte man den Pin ständig abfragen, könnte dann aber nichts anderes im Programm mehr machen. Daher gibt es das Interrupt-Konzept. Man sagt dem Interrupt-Controller, er solle für einen bestimmten Pin (und bei bestimmten Pin-Zustand) einen Interrupt auslösen. Mit der Arduino-Funktion "attachInterrupt" kann man das bewerkstelligen...

Die Odometrie soll in v1.0 dafür sorgen dass der Roboter auch nach längerer Mähdauer (niedriger Batteriespannung) so schnell fährt wie beim Start (vorausgesetzt, er ist beim Start nicht auf maximale Geschwindigkeit gesetzt worden).

Dasselbe Problem bei Steigung etc. (konstante Geschwindigkeit halten)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PCB1.3 - die Plug&Play Robotik-Plattform für Deinen Rasenroboter mit passender Open Source Software

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3802

  • maxbki@orange.fr
  • maxbki@orange.frs Avatar
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 39
  • Dank erhalten: 17
@Dietmar : Arduino due has only 11 analog inputs so A12 to A15 labels don't exist.
Interrupt declaration could be like that but i don't test for the moment:
void config(){
  ...
  attachInterrupt(pinOdometryLeft, Odometry_interrupt, CHANGE);
  attachInterrupt(pinOdometryLeft2, Odometry_interrupt, CHANGE);
  attachInterrupt(pinOdometryRight, Odometry_interrupt, CHANGE);
  attachInterrupt(pinOdometryRight2, Odometry_interrupt, CHANGE);

...
}

// odometry signal change interrupt
void Odometry_interrupt()
{   
  unsigned long timeMicros = micros();
  boolean odometryLeftState = digitalRead(pinOdometryLeft);
  boolean odometryLeftState2 = digitalRead(pinOdometryLeft2);
  boolean odometryRightState = digitalRead(pinOdometryRight);  
  boolean odometryRightState2 = digitalRead(pinOdometryRight2);  
  setOdometryState(timeMicros, odometryLeftState, odometryRightState, odometryLeftState2, odometryRightState2);
}


@AlexanderG: Svn code seems to be broken for due. Compilation is OK but setup() don't run. (I have try from r28 to r32).
By now, i'm using your archive dated 2014-05-21 as a base for due porting. I begin to implement IMU (MinIMU-9 v2 ) and rewrite interrupt but i don't have enough time to test...

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3804

  • nero76
  • nero76s Avatar
  • Offline
  • Administrator
  • Administrator
  • cofounder of www.ardumower.de
  • Beiträge: 2307
  • Dank erhalten: 818
Some code donated by "djekk" (Due code for tone() that does not conflict with Arduino servo.h library)...

about tone
forum.arduino.cc/index.php?topic=136500.0;wap

please try change in the due.cpp to this
TC_Configure(chTC, chNo,
        TC_CMR_TCCLKS_TIMER_CLOCK4 |
        TC_CMR_WAVE |         // Waveform mode
        TC_CMR_WAVSEL_UP_RC | // Counter running up and reset when equals to RC
        TC_CMR_ACPA_SET |     // RA compare sets TIOA
        TC_CMR_ACPC_CLEAR );  // RC compare clears TIOA

and test it

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PCB1.3 - die Plug&Play Robotik-Plattform für Deinen Rasenroboter mit passender Open Source Software
Letzte Änderung: von nero76.

Due Portierung (Achtung: nur experimentell) 5 Jahre 3 Monate her #3810

  • maxbki@orange.fr
  • maxbki@orange.frs Avatar
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 39
  • Dank erhalten: 17
Ok for the problem with tone().

Does anyone try the svn code on due? My problem is still here.
Compiling is Ok after modify the config.h but the setup() don't run.
I have replace setup() code by the simple code below but the serial monitor stay empty.
void setup()  {     
  Serial.begin(BAUDRATE); 

  for (int i=5; i>0; i--) {
    // wait a few secs to see if we are being programmed
    delay(1000);
    Serial.print(i);}
}

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Moderatoren: runtimeterror
Ladezeit der Seite: 0.419 Sekunden