PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : der ASURO RP6



stochri
26.07.2007, 23:59
Hallo Zusammen,

in diesem Thread werde ich einen kleinen Frevel begehen, nämlich ( zumindest in Ansätzen ) das RP6-Betriebssystem durch die ASURO-Lib zu ersetzen. Damit wird der RP6 sozusagen ein ASURO mit Ketten.
Meiner Meinung nach ist es die beste Möglichkeit, sich mit einem neuen System zu beschäftigen, in dem man die bisherigen Erfahrungen nutzen kann. Und da ich nun einmal relativ viel Erfahrungen mit dem ASURO habe, möchte ich einige Programme auf den RP6 übertragen. Dazu ist es notwendig, dass ein ASURO-kompatible Library existiert.

Für Anfänger, die schon einige Erfahrungen mit dem ASURO haben ist es mit der Verwendung einer solchen Library natürlich besonders einfach, Programme für den RP6 zu schreiben, da keine neuen Befehle gelernt werden müssen.

Hier also der Code für asuro.c und asuro.h:



//*********** ASURO Library modified for RP6 *****************************
//
// asuro.c
//
//************************************************** **********************
#include "asuro.h"
#include "string.h"

volatile unsigned char count36kHz;
volatile unsigned long timebase;

SIGNAL (SIG_OVERFLOW2)
{
TCNT2 += 0x25;
count36kHz ++;
if (!count36kHz) timebase ++;
}


/* Set motor speed */
inline void MotorSpeed(unsigned char left_speed, unsigned char right_speed)
{
OCR1A = left_speed;
OCR1B = right_speed;
}

/* Set motor direction */
inline void MotorDir(unsigned char left_dir, unsigned char right_dir)
{
switch(left_dir)
{
case FWD:
{
PORTC |= (LEFT_DIR) ;
}
break;
case RWD :
{
PORTC &=~ (LEFT_DIR) ;
}
break;
default:
{
OCR1A = 0;
}break;
}

switch(right_dir)
{
case FWD:
{
PORTC |= (RIGHT_DIR) ;
}
break;
case RWD :
{
PORTC &=~ (RIGHT_DIR) ;
}
break;
default:
{
OCR1B = 0;
}break;

}

}
/* StatusLED(GREEN); */
inline void StatusLED(unsigned char color)
{
if (color == OFF) {GREEN_LED_OFF; RED_LED_OFF;}
if (color == GREEN) {GREEN_LED_ON; RED_LED_OFF;}
if (color == YELLOW) {GREEN_LED_ON; RED_LED_ON;}
if (color == RED) {GREEN_LED_OFF; RED_LED_ON;}
}
void BackLED(unsigned char left, unsigned char right)
{
};

/* uses 36kHz timer => Sleep(x) = x/36kHz [sec] */
void Sleep(unsigned char time36kHz)
{
unsigned char ziel=(time36kHz+count36kHz) & 0x00FF;
while (count36kHz != ziel);
}

void Msleep(int dauer)
{
int z;
for(z=0;z<dauer;z++) Sleep(36);
}

void Init (void)
{
//-------- seriell interface programmed in boot routine and already running -------
// prepare 36kHz for IR - Communication
//TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20);
TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << CS20);

OCR2 = 0x91; // duty cycle for 36kHz
TIMSK |= (1 << TOIE2); // 36kHz counter for sleep

// I/O Ports
DDRC = GREEN_LED | RED_LED;

// Motor Bits
DDRC |= (1<<PC2) | (1<<PC3);
DDRD=0;
DDRD |= PWM;

DDRB=0b01011000;
PORTB=0b00000000;

// for PWM (8-Bit PWM) on OC1A & OC1B
TCCR1A = (1 << WGM10) | (1 << COM1A1) | (1 << COM1B1);
// tmr1 running on MCU clock/8
TCCR1B = (1 << CS11);

MotorDir(BREAK,BREAK);
MotorSpeed(0,0);

sei();
}
//*********** ASURO Library modified for RP6 *****************************
//
// asuro.h
//
//************************************************** **********************
#ifndef ASURO_H
#define ASURO_H

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdlib.h>

#define FALSE 0
#define TRUE 1

#define OFF 0
#define ON 1

#define GREEN 1
#define RED 2
#define YELLOW 3

/* neue Funktionen und Variablen*/
#define LEFT 0
#define RIGHT 1

void Msleep(int dauer);
inline void StatusLED(unsigned char color);
void Sleep(unsigned char time36kHz);
inline void MotorDir(unsigned char left_dir, unsigned char right_dir);
inline void MotorSpeed(unsigned char left_speed, unsigned char right_speed);
void BackLED(unsigned char left, unsigned char right);

// RP6 definitions
#define GREEN_LED (1 << PC4) /*!< PB0 Port fuer Gruene Status LED */
#define RED_LED (1 << PC5) /*!< PD2 Port fuer Rote Status LED */
#define PWM (1 << PD4) | (1 << PD5) /*!< PB1, PB2 Ports fuer Pulsweitenmodulation der Motor Geschwindigkeit */
#define RIGHT_DIR (1 << PC3) /*!Ports fuer Drehrichtung rechter Motor */
#define LEFT_DIR (1 << PC2) /*!Ports fuer Drehrichtung linker Motor */
#define BREAK 0x00 /*!< Motor bremsen */
#define FREE 0x00 /*!< Motor freilaufend ==> gibts nicht beim RP6 */

// ASURO Ports, not uset in RP6
#define FWD (1 << PB5) /*!< Motor vorwaerts */
#define RWD (1 << PB4) /*!< Motor rueckwaerts */

#define GREEN_LED_ON PORTC |= GREEN_LED /*!< Gruene Status LED an */
#define GREEN_LED_OFF PORTC &= ~GREEN_LED /*!< Gruene Status LED aus */
#define RED_LED_ON PORTC |= RED_LED /*!< Rote Status LED an */
#define RED_LED_OFF PORTC &= ~RED_LED /*!< Rote Status LED aus */

#endif /* ASURO_H */

//*********** ASURO Library modified for RP6 *****************************
//
// test.c
//
//************************************************** **********************
#include "asuro.h"

int main(void)
{
Init();
// Encoder_Init();

StatusLED(GREEN);
Msleep(500);
StatusLED(RED);
Msleep(500);
StatusLED(GREEN);
Msleep(500);
StatusLED(RED);

Msleep(2000);

MotorDir(FWD,FWD);
MotorSpeed(100,100);
Msleep(2000);
MotorDir(RWD,RWD);
Msleep(2000);

MotorSpeed(0,0);



while(1);
}


Copyrights:

/*!
* \file asuro.c
* \brief Die ASURO Bibliothek
*
* $Revision: 2.60 $
* $Date: 27. September 2005 $
* $Author: Jan Grewe, Robotrixer, Waste, Stochri, Andun, m.a.r.v.i.n $
*
*/

/************************************************** *****************************
*
* File Name: asuro.c
* Project : ASURO
*
* Description: This file contains ASURO main features
*
* Ver. Date Author Comments
* ------- ---------- -------------- ------------------------------
* 1.00 14.08.2003 Jan Grewe build
* 2.00 14.10.2003 Jan Grewe LEFT_VEL, RIGHT_VEL -> MotorSpeed(unsigned char left_speed, unsigned char right_speed);
* LeftRwd(),LeftFwd(),RightRwd(),
* RigthFwd() -> MotorDir(unsigned char left_dir, unsigned char right_dir);
* GREEN_ON,GREEN_OFF,RED_ON,RED_OFF -> StatusLED(unsigned char color);
* LED_RED_ON, LED_RED_OFF -> FrontLED(unsigned char color);
* Blink(unsigned char left, unsigned char right) -> BackLED(unsigned char left, unsigned char right);
* Alles in Funktionen gefasst => leichter verst�dlich ?!?!
* 2.10 17.10.2003 Jan Grewe new Timer funktion void Sleep(unsigned char time36kHz)
*
* Copyright (c) 2003 DLR Robotics & Mechatronics
************************************************** ***************************/
/************************************************** **************************
*
* File Name: asuro.c
* Project : asuro library "Robotrixer Buxtehude"
*
* Description: This file contains additional functions:
*
* signal (SIG_ADC) interrupt/signal routine for encoder-counter
* signal (SIG_INTERRUPT1) signal for switches
* Encoder_Init() initializing encoder-counter
* Encoder_Start() start autoencoding
* Encoder_Stop() stop autoencoding
* Encoder_Set(int,int) set encodervalue
* Msleep(int delay) wait for delay in milliseconds
* Gettime() get systemtime in milliseconds
* PrintInt(int)
*
* modifications in Sleep, SIG_OUTPUT_COMPARE2, PollSwitch, LineData
*
* Ver. Date Author Comments
* ------- ---------- -------------- ------------------------------
* beta1 31.03.2005 Robotrixer asuro library
* ------- ---------- -------------- ------------------------------
* the encoder source is based on RechteckDemo.c ver 2.0 by Jan Grewe 22.10.2003
* Copyright (c) 2003 DLR Robotics & Mechatronics

************************************************** ***************************/
/************************************************** **************************
*
* File Name: asuro.c
* Project : asuro library modified for IR collision detector
*
* Description: modifications made in following functions:
*
* SIGNAL (SIG_OUTPUT_COMPARE2) -> SIGNAL (SIG_OVERFLOW2)
* Gettime() counts now 36kHz
* Init() timer2 modified for adjustable duty cycle
* Batterie() bug fixed
* Sleep() counts now 36kHz
* Msleep() counts now 36kHz
*
* Ver. Date Author Comments
* ------- ---------- -------------- ------------------------------
* beta2 11.06.2005 Waste asuro library
* ------- ---------- -------------- ------------------------------
************************************************** ***************************/
/************************************************** **************************
*
* File Name: asuro.c
* Project : asuro library
*
* Description: This file contains additional functions:
*
* motor control functions 29.7.2005 stochri
* void Go(int distance)
* void Turn(int degree)
*
* unsigned char Wheelspeed[2] measured Wheelspeed by interupt
*
* Ver. Date Author Comments
* ------- ---------- -------------- ------------------------------------------
* sto1 29.07.2005 stochri asuro library with motor control functions
* ------- ---------- -------------- ------------------------------------------
************************************************** ***************************/
/************************************************** **************************
*
* File Name: asuro.c
* Project : asuro library
*
* Description: modifications made in following functions:
*
* void Go(int distance, int speed)
* void Turn(int degree, int speed)
*
*
* Ver. Date Author Comments
* ------- ---------- -------------- ------------------------------------------
* And1 31.07.2005 Andun Added Speed and Odometrie
* ------- ---------- -------------- ------------------------------------------
************************************************** ***************************/
/************************************************** **************************
*
* File Name: asuro.c
* Project : asuro library
*
* Description: modifications made in following functions:
*
* void PrintInt(int wert)
*
*
* Ver. Date Author Comments
* ------- ---------- -------------- ------------------------------------------
* 2.60 28.09.2005 m.a.r.v.i.n doxygen comments
* ------- ---------- -------------- ------------------------------------------
************************************************** ***************************/
/************************************************** *************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* any later version. *
************************************************** *************************/



Bester Gruß,
stochri

Edit:
V0.1: Msleep und StatusLED erstellt
V0.2: MotorSpeed und MotorDir eingefügt

SlyD
27.07.2007, 02:45
Hallo stochri,

Der RP6 Bootloader kümmert sich zwar auch schon um die grundlegenden Sachen wie Portrichtung etc., aber nicht um die genauen Einstellungen.
Das muss noch mit ins Programm rein - sonst wird einiges nicht wirklich funktionieren. Die Hardware ist beim RP6 komplett anders als beim ASURO.

Die ganzen Timer/PWM Einstellungen kannst Du daher natürlich nicht vom ASURO übernehmen!
Da solltest Du Dir mal die Init Routine von der RP6Library anschauen!

MfG,
SlyD

Sternthaler
30.07.2007, 09:24
Hallo stochri,
toller Ansatz, die LIB vom Asuro zu nutzen.
Da ich keinen RP[5|6] habe, kann ich also auch nicht wissen, was da an Software / Lib á la asuro.c mitgeliefert wird. (Deshalb bitte ich jetzt schon mal um Nachsicht)

Ich habe mir mal deinen oben angegeben Code angesehen. Dabei ist mir aufgefallen, dass du FWD und RWD im asuro.h-Teil definierst, aber als Kommentar angibst, dass es nicht benutzt wird.
Im asuro.c-Teil benutzt du diese Defines in der Funktion MotorSpeed() als Vergleichswerte für die übergebenen Parameter (left_dir und right_dir).
Somit kann man diese Funktion ja nun mit den im Asuro bekannten Parametern aufrufen. Klasse.
In der Funktion setzt du dann FWD und RWD auf LEFT_DIR bzw. RIGHT_DIR um. Kommen diese Defines vom RP6? Könnte man hier nicht beide Define-Pärchen FWD / RWD und LEFT_DIR / RIGHT_DIR 'irgendwie' gleich definieren?
Da komme ich drauf, weil ich es für 'gefährlich' halte FWD und RWD auf Port-Pins zu definieren. Ich habe ja keine Ahnung, was beim RP6 an Hardware dahinter liegt.

stochri
30.07.2007, 22:45
Hallo Sternthaler,

In der Funktion setzt du dann FWD und RWD auf LEFT_DIR bzw. RIGHT_DIR um. Kommen diese Defines vom RP6? Könnte man hier nicht beide Define-Pärchen FWD / RWD und LEFT_DIR / RIGHT_DIR 'irgendwie' gleich definieren?
weil ich schnell sein wollte, habe ich manchmal ein wenig geschludert. Es sind wirklich Teile der ASURO-Defines und der RP6-Defines gemischt. Was die ASURO-defines anbelangt, ist deren Verwendung natürlich notwendig, damit die Lib kompatibel wird.


Da komme ich drauf, weil ich es für 'gefährlich' halte FWD und RWD auf Port-Pins zu definieren. Ich habe ja keine Ahnung, was beim RP6 an Hardware dahinter liegt.

Das kann man vielleicht aus diesem Thread (https://www.roboternetz.de/phpBB2/viewtopic.php?t=32677) ganz gut ersehen, hier ist die Portbelegung des Atmega32 und deren Verwendung auf dem RP6 beschrieben.

Ich habe mir schon überlegt, ob es nicht ganz lustig wäre, in die ASURO-Bibliothek einfach einen Compiler-Switch der Form #define RP6 oder #define ASURO einzubauen, damit man die Bibliothek gleich für beide verwenden kann. Der Aufwand dazu wäre eventuell überschaubar.

Die RP6-Bibliothek ist zwar etwas komfortabler als die ASURO-Bibliothek, dafür ist die ASURO Bibliothek aber einfacher zu durchschauen.

Gruß,
stochri

Sternthaler
31.07.2007, 02:35
Hallo stochri,
danke für die prompte Antwort.
So ein Define in der Asuro-LIB hätte schon etwas. Evl. kannst du ja mal den Header zur RP6-Lib posten, damit man mal sehen kann was da auf den 'Kleinen' zukommen würde.

Mit den Port's zum Asuro-FWD und -RWD wäre ich etwas vorsichtig. Da sind laut deinem Link mit PB5 und PB6 die EEPROM-Anschlüsse SI und SO angesprochen (Controller-Professor) bzw. im Base-Professor "Start/Stop-Taster" und "ACS Sendediode links"
Welcher davon wird denn mit der Asuro-LIB gefüttert? radbruch hatte in deinem RP6-Musik-Thread (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=32753) angegeben, dass Asuro und RP6 den gleichen Takt bekommen. Dann kann es sich ja eigendlich nur um den Base-Prozessor handeln.

stochri
31.07.2007, 07:50
Mit den Port's zum Asuro-FWD und -RWD wäre ich etwas vorsichtig. Da sind laut deinem Link mit PB5 und PB6 die EEPROM-Anschlüsse SI und SO angesproche

Nach einigem Nachdenken ist mir klar geworden, was Du meinst.
Der Sachverhalt ist, dass die Portdefinition zwar rein "schriftlich" in den defines verwendet werden, also

#define FWD (1 << PB5) /*!< Motor vorwaerts */

aber dieser Portpin im Programm nie angesprochen wird, da ich die Definition aus Kompatibilitätsgründen etwas "misbräuchlich" verwende.

PB5 ist nämlich nichts anderes als eine Zahl, nämlich "5" und mit der defintion ersetzt ich FWD einfach durch die Zahl "1<<5" also 0x20. Das erspart mir, für FWD irgendeine andere Zahl zu "erfinden".

Also Resume: PB5 steht zwar da, wird aber nicht angesprochen.

Gruß,
stochri

Sternthaler
31.07.2007, 19:55
Hallo stochri,
jetzt ist mir auch klar, warum es tatsächlich egal ist wie FWD und RWD eigendlich definiert sind. Die beiden Defines werden ja in der Asuro-LIB und auch bei dir sonst nirgendwo benötigt. #-o
Also reichen alle 4 Asuro-Defines (FWD, RWD, BREAK und FREE) um sie als Parameter so zu nutzen, wie Asurianer es kennen. \:D/
(BREAK/FREE ist bekannt)

stochri
31.07.2007, 21:35
Also reichen alle 4 Asuro-Defines (FWD, RWD, BREAK und FREE) um sie als Parameter so zu nutzen, wie Asurianer es kennen. Dancing

So ist es!
Was die Anschlußbelegung des Atmega32 angeht, hast Du wahrscheinlich die falsche erwischt, in dem Link werden verschiedene Anschlußbelegungen aufgeführt. Die Hauptplatine des RP6 wird als "Base" bezeichnet.

stochri

Sternthaler
31.07.2007, 21:44
Hallo stochri,
ja, die "Base" hatte ich oben ja schon als Favoriten im Auge.
Wie schaut es aus mit einem Post der RP6-LIB-Header-Datei? Dann könnte ich ja noch einen 'Blick riskieren' um ein #ifdef ASURO_ODER_RP6 zu beantragen bei m.a.r.v.i.n ;-)

stochri
01.08.2007, 07:52
Die Sourcen des RP6 befinden sich hier:
http://www.arexx.com/rp6/downloads/RP6Examples_20070731.zip
Die Diskussion dazu hier (https://www.roboternetz.de/phpBB2/viewtopic.php?t=32840).

Sternthaler
02.08.2007, 02:17
@stochri,
jepp, gefunden. Es wird wohl ein bisschen dauern bei 137 Seiten Doku und 263 Files zur RP6-Lib. Ich schätze mal so zwischen 20 und 20000 Minuten ;-)
Zum Glück scheinen es ja nur 13 Dateien zur eigendlichen RP6-LIB zu sein.
Na, morgen/heute ist auch noch ein Tag.

stochri
21.09.2007, 12:24
Da doch einige Fehler in der ersten Version der Library waren, hier eine etwas fehlerkorrigierte Version.

roboterheld
21.09.2007, 13:47
schau dir das unten an für die pwm.
mit deiner hast du nur ca 15khz, beim rp6 muss die pwm ca mit 19khz laufen, ansonsten brennen die motortreiber durch.

weiterhin hilfst du den rp6 über den jordan, weil du kein sanftes anfahren machst und der wechsel der richtung zu schnell geht.

wenn du den aufbau und die baugruppenleistungen vom rp6 nicht kennst, lass lieber die finger weg.



// Initialize Timer1 - PWM:
// PWM, phase correct with ICR1 as top value.
TCCR1A = (0 << WGM10) | (1 << WGM11) | (1 << COM1A1) | (1 << COM1B1);
TCCR1B = (1 << WGM13) | (0 << WGM12) | (1 << CS10);
ICR1 = 210; // Phase corret PWM top value - 210 results in
// about 19 kHz PWM.
// ICR1 is the maximum (=100% duty cycle) PWM value!
// This means that the PWM resolution is a bit lower, but
// if the frequency is lower than 19 kHz you may hear very
// annoying high pitch noises from the motors!
// 19 kHz is a bit over the maximum frequency most people can
// hear!
//
// ATTENTION: Max PWM value is 210 and NOT 255 !!!

SlyD
24.09.2007, 13:40
@roboterheld:

wie (fast) immer völliger Schwachsinn was Du hier postest.
Warum *DU* das mit BASCOM nicht hinbekommst, kann ich nicht sagen - Du kennst Dich wohl mit BASCOM nicht gut genug aus wie es scheint.



Ich habe die Motortreiber des RP6 gerade (auch wenn ich das schon vor ein paar Monaten mit ähnlichen Frequenzen getan habe) nochmals von 40000 Hertz bis unter 100 HERTZ (ohne kilo) getestet und keine Probleme damit gehabt. (allerdings ist diese niedrige Frequenz unter 100Hz absolut nicht für den Dauerbetrieb zu empfehlen - da vibrieren die Motoren schon ganz schön und ziehen auch deutlich mehr Strom als z.B. mit Frequenzen über 1kHz!)


Unterhalb von etwa 16 bis 18kHz hört man natürlich die erzeugte Frequenz und das geht einem ziemlich auf die Nerven solange man das nicht zum Musik machen ausnutzt wie es hier schon von stochri demonstriert wurde.
Das Laufverhalten der Motoren verändert sich natürlich auch.

19kHz ist eine sehr gute (unhörbare) Frequenz für die Motoren des RP6 - da muss nix dran geändert werden.
Aber man kann die Motortreiber auch mit anderen Frequenzen betreiben wenn man das unbedingt möchte...

MfG,
SlyD

PS: Das sanfte Anlaufen steigert die Lebensdauer der mechanischen Komponenten - wenn man direkt von 0 auf Maximalgeschwindigkeit oder umgekehrt wechselt, ist das für Motoren und Zahnräder *auf Dauer* gesehen nicht gut.

Das ist aber bei ALLEN Robotern egal welcher Bauart so...
sanftes an und abbremsen hab ich bei meinem großen Roboter mit sehr teurer Alu Mechanik auch drin.

roboterheld
24.09.2007, 14:38
dim Tccr1a_set as byte
dim Tccr1b_set as byte

Reset Tccr1a_set .wgm10 ' werte wie in winavr-c
Set Tccr1a_set .wgm11
Set Tccr1a_set .com1a1
Set Tccr1a_set .com1b1

Tccr1a = Tccr1a Or Tccr1a_set ' dann mit or dem register zugewiesen

hier noch einmal das gleiche :

Reset Tccr1b_set .wgm12
Set Tccr1b_set .wgm13
Set Tccr1b_set .cs10

Tccr1b = Tccr1b Or Tccr1b_set

Icr1h = 0
Icr1l = 210


das ist mein bascom-code. und der haut gut hin ohne das die motortreiber warm werden. wenn ich das sanfte bremsen nicht mache , mit anschliessender plötzlicher rückswärtsfahrt (auch mit winaver-c ) werden die motortreiber schön heiss . ergebnis ist : beim rp6 dient es nicht nur zur schonung der mechanik sondern auch zum schutz der motortreiber.

SlyD
24.09.2007, 15:45
Hallo,

OK der Bascom Code sieht schon viel passender aus.


Aber zu den Motortreibern und sanftem anlaufen:
Ich weiss nicht was Du mit dem Roboter angestellt hast - auch wenn ich mal eines der härteren Testprogramme laufen lasse kann ich das wirklich nicht nachvollziehen.
Das Testprogramm ist komplett OHNE sanftes anlaufen und jede Sekunde(!!!) wird die Laufrichtung gewechselt während der PWM Wert mit einer Periode von etwa 4 Sekunden zwischen 50 und 180 hoch und runtergefahren wird. Bei einer Spannung von 8.5V drehen die Räder damit OHNE weitere Last extrem schnell. Von den Encodern gemessene Maximalgeschwindigkeit war über 1500 Zählschritte / sekunde

(die RP6Lib würde eigentlich maximal 1000 zulassen.
Achtung: bitte nicht selbst ausprobieren ;) Bei so einer Geschwindigkeit die Drehrichtung abrupt zu ändern ist auf Dauer gar nicht gut... )

Da werden die MOSFETs nur dann ein wenig warm, wenn ich die Motoren zusätzlich gut mit den Händen bremse. Wenn die frei laufen ist keine Temperaturerhöhung feststellbar gewesen.


MfG,
SlyD

roboterheld
24.09.2007, 22:28
meine batterein haben zur zeit 9,2 volt.

beim ersten rp6 ging unter belastung mit wechselseitigen fahren nach 30 minuten der rechte motor nicht mehr. muss den motortreiber gefetzt haben.

den richtungswechsel mache ich nur noch mit sanften runterfahren.



wieviel mah haben die motoren eigentlich bei verschiedenen belastungen?

stochri
25.09.2007, 10:15
roboterheld schrieb:

schau dir das unten an für die pwm.
mit deiner hast du nur ca 15khz, beim rp6 muss die pwm ca mit 19khz laufen, ansonsten brennen die motortreiber durch.

weiterhin hilfst du den rp6 über den jordan, weil du kein sanftes anfahren machst und der wechsel der richtung zu schnell geht.


Liebe RP6-ASURO-User,

nach einigen Stunden Fahrzeit ist meinem RP6 noch kein Unglück geschehen. Die Motoren und die Mechanik scheinen ja doch robuster als gedacht zu sein. Wer seinen RP6 bei der Verwendung der ASURO-Lib schonen möchte, kann ja mit MotorSpeed(200,200) oder weniger fahren. Wer ganz sicher sein möchte, kann in der Motorspeed-Funktion noch eine Begrenzung hineinprogrammieren.

roboterheld schrieb:

wenn du den aufbau und die baugruppenleistungen vom rp6 nicht kennst, lass lieber die finger weg.

Ich finde der Nickname "roboterheld" passt ganz gut zum Sprachstiel ](*,)