Forum: Analoge Elektronik und Schaltungstechnik RC Empfänger PWM Signal Mosfet Motorregler


von Digit-22 N. (digit-22)


Lesenswert?

Hej Leute.

ich habe einige kleine Mosfets hier rum liegen und wollte gern eine 
Schaltung aufbauen mit der ich einen Mosfet über das PWM Signal was aus 
meinem RC Empfänger kommt an zu steuern. Ziel des ganzen ist es einen 
kleinen Regler zu bauen mit dem ich einen kleinen Gleichstrommotor (nur 
eine Richtung drehend) der max 1A zieht, zu realisieren. Soweit ich weiß 
kommt aus dem Empfänger ein PWM Signal mit 50HZ. Wenn ich das Signal mit 
dem Oszi messe habe ich eine Spannung zwichen 0 und 0,5V. Doch das 
reicht nicht um mein Mosfet anzu steuern.

Weiß einer Raat? Die Schaltung sollte so wenig wie möglich an Bauteile 
haben
da es für Micro Modelle sein soll.



LG
Shabi

von EGS_TI (Gast)


Lesenswert?

Operationsverstärker?

von hxd (Gast)


Lesenswert?

Nimm einen PIC10 +  Mosfet.
Kleiner und einfacher geht es nicht.

von T. B. (blablabla)


Lesenswert?

Bei Standard Empfängern kommt alle ca alle 20ms (also 50Hz) ein Impuls 
mit einer Impulslänge zwischen 1 und 2ms, je nach gewünschtem 
Servoausschlag. Die Spannung des Impulses entspricht aber üblicherweise 
nicht 0,5 Volt, sondern der Versorgungsspannung des Empfängers. Hast du 
eventuell den Tastkopf falsch eingestellt?.
Lies doch einfach die Impulslänge mit einem uC ein und erzeuge dir 
daraus ein passendes PWM Signal für den Mosfet.

von Digit-22 N. (digit-22)


Lesenswert?

Hallo

Danke schonmal für die Antworten.
Also einen µc wollte ich nicht verwenden. Wie gesagt das ganze soll so 
wenig
komponenten und einfach wie möglich sein. Es gibt ja auch normale Regler 
zu kaufen nur die sind mir viel zu groß und zu schwer. Diese Regler 
haben ja auch keine µc oder?

LG
Shabi

von T. B. (blablabla)


Lesenswert?

Einfacher als mit einem kleinen uC geht es aus meiner Sicht nicht. Auch 
die Regler die es zu kaufen gibt werden wohl alle einen uC eingebaut 
haben, alleine schon wegen den Sicherheitsfeatures. Bei kleinen BLDC 
Controllern habe ich schon häufiger atmegas gesehen, für deine Zwecke 
sollte es aber auch ein kleiner Attiny 13 o.ä. tun. Was soll daran groß 
oder kompliziert sein?

von Digit-22 N. (digit-22)


Lesenswert?

Hallo Leute.

Nach einer kurzen Pause (ca. 9 Monate) habe ich angefangen mich wieder 
mit diesen Thema zu befassen.

Um auf die letzten Antworten zu kommen... Ja habe angefangen mit einem 
µC zu experementieren. Ich habe lange gesucht und ein paar dinge 
gefunden die mir weiter geholfen haben. Nun habe ich ein Code in meinem 
Atmega8 wo ich auf einem Pin ein PWM Signal von einem RC Empfänger drauf 
gebe und an einem Ausgang habe ich dann einen micro Bürstenmotor dran.

Soweit so gut der Code funktioniert auch allerdings natürlich total 
primitiv wie mansche hier im Forum Kopfschütelnd sagen würden.

Mein Vorhaben nach wie vor ich möchte ultra kleine leichte micro modelle 
wie z.b. microcopter bauen und benötige für die Bürstenmotoren micro 
Regler die sehr klein und leicht sind.  Da ich im Netzt kaum was 
gefunden habe und wenn dann fast unbezahlbar, hab ich mir gedacht ich 
baue meinen eigenen Regler.

Was ich erreichen möchte ist das wenn der Gasknüppel auf 0 steht der 
Motor aus ist und bei Vollgas der motor max Drehzahl erreicht. Natürlich 
soll von 0 bis max alles geregelt sein.

Hier nun mein Code. Bitte nicht lachen ich bin froh das ich es überhaupt 
geschafft habe den Motor zum laufen zu bringen.
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <util/delay.h>
4
5
#define F_CPU 4000000UL
6
7
8
volatile int flanke=0;
9
volatile int aktuell_pwm_l=0;
10
volatile int aktuell_pwm_h=0;
11
12
ISR(TIMER1_CAPT_vect)
13
{
14
  if (flanke==0)
15
  {
16
    TCNT1H = 0;             //Timer auf null zurück
17
    TCNT1L = 0;
18
    TCCR1B&= ~(1<<ICES1); //ICP-Pin auf fallende Flanke einstellen
19
    flanke=1;
20
  }
21
  else
22
  {
23
    flanke=0;
24
    TCCR1B|=(1<<ICES1);    //ICP auf steigende Flanke wieder aktivieren
25
    aktuell_pwm_l=ICR1L;    //Zählerstand speichern
26
    aktuell_pwm_h=ICR1H;    //zählerstand speichern
27
  }
28
}
29
30
void init_prozedur(void)
31
{
32
  TCCR1B |=  (1<<ICNC1)|(1<<ICES1)|(1<<CS11) | (1<<CS10); //vorteiler 64, Mittelung ON, steigende flanke
33
  TIMSK |= (1<<TICIE1);//INTERRUPT ON
34
35
  sei();
36
}
37
38
int main (void)
39
{
40
  init_prozedur();
41
  DDRC=0xff;
42
  DDRB=0b11110000;
43
  while(1) 
44
  {        
45
      if (aktuell_pwm_l >= 60 && aktuell_pwm_l < 65)
46
      {
47
        PORTC^=(1<<PC1);
48
        _delay_ms(100);
49
      }
50
      if (aktuell_pwm_l >= 65 && aktuell_pwm_l < 70)
51
      {
52
        PORTC^=(1<<PC1);
53
        _delay_ms(95);
54
      }
55
      if (aktuell_pwm_l >= 70 && aktuell_pwm_l < 75)
56
      {
57
        PORTC^=(1<<PC1);
58
        _delay_ms(90);
59
      }      
60
      if (aktuell_pwm_l >= 75 && aktuell_pwm_l < 80)
61
      {
62
        PORTC^=(1<<PC1);
63
        _delay_ms(85);
64
      }          
65
      if (aktuell_pwm_l >= 80 && aktuell_pwm_l < 85)
66
      {
67
        PORTC^=(1<<PC1);
68
        _delay_ms(80);
69
      }  
70
      if (aktuell_pwm_l >= 85 && aktuell_pwm_l < 90)
71
      {
72
        PORTC^=(1<<PC1);
73
        _delay_ms(75);
74
      }
75
      if (aktuell_pwm_l >= 90 && aktuell_pwm_l < 95)
76
      {
77
        PORTC^=(1<<PC1);
78
        _delay_ms(70);
79
      }
80
      if (aktuell_pwm_l >= 95 && aktuell_pwm_l < 100)
81
      {
82
        PORTC^=(1<<PC1);
83
        _delay_ms(65);
84
      }
85
      if (aktuell_pwm_l >= 100 && aktuell_pwm_l < 105)
86
      {
87
        PORTC^=(1<<PC1);
88
        _delay_ms(60);
89
      }
90
      if (aktuell_pwm_l >= 105 && aktuell_pwm_l < 110)
91
      {
92
        PORTC^=(1<<PC1);
93
        _delay_ms(55);
94
      }
95
      if (aktuell_pwm_l >= 110 && aktuell_pwm_l < 115)
96
      {
97
        PORTC^=(1<<PC1);
98
        _delay_ms(50);
99
      }
100
      if (aktuell_pwm_l >= 115 && aktuell_pwm_l < 120)
101
      {
102
        PORTC^=(1<<PC1);
103
        _delay_ms(45);
104
      }
105
      if (aktuell_pwm_l >= 120 && aktuell_pwm_l < 125)
106
      {
107
        PORTC^=(1<<PC1);
108
        _delay_ms(40);
109
      }
110
      if (aktuell_pwm_l >= 125 && aktuell_pwm_l < 130)
111
      {
112
        PORTC^=(1<<PC1);
113
        _delay_ms(35);
114
      }
115
      if (aktuell_pwm_l >= 130 && aktuell_pwm_l < 135)
116
      {
117
        PORTC^=(1<<PC1);
118
        _delay_ms(30);
119
      }
120
      if (aktuell_pwm_l >= 135 && aktuell_pwm_l < 140)
121
      {
122
        PORTC^=(1<<PC1);
123
        _delay_ms(25);
124
      }
125
      if (aktuell_pwm_l >= 140 && aktuell_pwm_l < 145)
126
      {
127
        PORTC^=(1<<PC1);
128
        _delay_ms(20);
129
      }
130
      if (aktuell_pwm_l >= 145 && aktuell_pwm_l < 150)
131
      {
132
        PORTC^=(1<<PC1);
133
        _delay_ms(15);      
134
      }
135
      if (aktuell_pwm_l >= 150 && aktuell_pwm_l < 155)
136
      {
137
        PORTC^=(1<<PC1);
138
        _delay_ms(10);
139
      }
140
  }
141
}


Über Verbesserungen und Vorschläge würde ich mich sehr freuen.

LG
Shabi

von Axel R. (Gast)


Lesenswert?

krass - das soo zu machen, wenns denn Funktioniert...
Gut gemacht.
Ich habe noch fertige unbestückte Platinchen für sowas.
Für zwei Bier schicke ich dir eine. Bestücken musste dann selbst.

Axelr.

von Axel R. (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein Bild

von Digit-22 N. (digit-22)


Lesenswert?

Hej
Ja der Code funtioniert aber natürlich noch lange nicht wie es soll ich 
bekomme die Drehzal zwar geregelt aber alles hakt etwas und läuft 
unrund...

Die Platinen schauen cool aus was kommen denn für Komponenten drauf und 
wie sieht es denn mit dem Code aus?

Beim Googlen bin ich z.b. hier drauf gestoßen:

http://www.flytron.com/micro-rc-electronics/51-micro-4ah-esc.html

So was in der richtung möchte ich bauen allerdings einen Controller der 
dann 4 Mosfets/Motoren betreibt.


LG
Shabi

von Axel R. (Gast)


Lesenswert?

Ich habe hier einen mega8 drauf und zwei doppelfets. Leider fehlen 
Phillip Widerstände sodass beim flashen der Motor ab sein muss. Code ist 
in Basic geschrieben. Habe ich aber nicht mehr. Schaltung muss ich raus 
suchen. War aber nichts weiter. Die nkanal gingen auf je einen Timer und 
di pkanal auf zwei portpins. Die großen Pass sind für den 7.3728 MHz 
Resonanz. kann man an der stellen gern absägen und den internen 
verwenden.

Sorry wegen Text -> IPhone

von Digit-22 N. (digit-22)


Lesenswert?

Hej hört sich super an aber dann hätte ich wieder das Problem das ich 
keinen Code habe. Die Hardware ist in moment das kleinere Über.
Aber danke vielmals für das Angebot.

Um auf mein Code zurück zu kommen, es gibt sicherlich elegantere 
Methoden den Ausgang anzusteuern nur ist die Frage wie muss das 
ausschauen?

Ich hab ne ewigkeit gesucht und suche immer noch finde aber nichts was 
man verwerten könnte.



Über ein paar Tipps würde ich mich sehr freuen.




LG
Shabi

von Frank S. (hobbyist)


Lesenswert?

Ich kenne deine Anforderungen bezüglich der Motoren nicht. Aber diese 
Regler kennst du, oder? 
http://www.hobbyking.com/hobbyking/store/__9667__HobbyKing_XP_3A_1S_0_7g_Brushless_Speed_Controller_.html

http://www.hobbyking.com/hobbyking/store/__7184__TGY_DP_3A_1S_1g_Brushless_Speed_Controller.html

Viel kleiner und leichter gehts kaum, denke ich.

Ich habe den 3A Regler an einem Mini-BL in der Micro Trojan geflogen. 
Der Regler lief einwandfrei. Leider brachte der Motor nicht die 
gewünschte Steigleistung, so dass ich wieder auf das Originalsetup 
umgebaut habe.

Frank

von Digit-22 N. (digit-22)


Lesenswert?

Hallo Frank,

ja diese Regler  kenn ich hab ich auch schon in verbindung mit den 2g 
Brushless Motoren benutzt. Wie du schon sagts die Regler sind top nur 
die motoren bringen in der Regel kaum leistung.

Aber ich will ja Bürstenmotoren ansteuern...
Meine Motoren sind sehr klein und leicht und es werden maximale Ströme 
von wenn überhaupt 1A fließen.


Danke dennoch für dein Mühe.




LG
Shabi

von Axel R. (Gast)


Lesenswert?

Auch das geht noch viel kleiner ;)
Aber Brushless war hier nicht gefragt, von daher habe ich die Platinen 
jetzt nicht fotografiert.

von Michael L. (eagle87)


Lesenswert?

Hallo Shabi,
Timer 1 und Timer 2 des Mega8 haben doch ne Hardware PWM. Schau am 
besten im Datenblatt nach dem Fast PWM Mode.

Gruß
Michael

von Digit-22 N. (digit-22)


Lesenswert?

Hallo also da blicke ich nicht durch. Das Prinziep ist doch das ich ein 
pwm Signal mit 50Hz rein gebe und ein ein PWM mit höherer Frequenz 
herausgebe.
Und das Signal am Ausgang lege ich dann auf ein Mosfet der den Motor 
betreibt. Ist das Richtig?

Ich habe jetzt mein Code etwas verändert. Statt _delay_ms habe ich jetzt 
_delay_µs eingebaut und schon läuft der motor viel ruhiger.

Dennoch denke ich das es viel besser gehen muss. Statt der delays muss 
ich doch irgend etwas anderes einstezen können.

Das mit dem Fast PWM hab ich nicht so richtig kapiert...


LG
Shabi

von Michael L. (eagle87)


Lesenswert?

Shabi N. schrieb:
> Hallo also da blicke ich nicht durch. Das Prinziep ist doch das ich ein
> pwm Signal mit 50Hz rein gebe und ein ein PWM mit höherer Frequenz
> herausgebe.
Außerdem hat das Eingangssignal ein Tastverhältnis von ca. 5...10% 
(1...2ms Pulsweite) und das Ausgangssignal von 0...100%

> Und das Signal am Ausgang lege ich dann auf ein Mosfet der den Motor
> betreibt. Ist das Richtig?
Das stimmt soweit. Bei größeren Mosfets, oder wenn die Flanken nicht so 
steil oder steiler sein sollen kann es sein dass man noch ne zusätzliche 
Verschaltung brauch. Aber bei deinem Fall gehts glaub erstmal auch ohne.

> Ich habe jetzt mein Code etwas verändert. Statt _delay_ms habe ich jetzt
> _delay_µs eingebaut und schon läuft der motor viel ruhiger.
Üblich sind Taktfrequenzen von z.B. mehreren KHz das würde mit den 
Delays von einigen µs zusammen passen. So ganz genau hab ich mir deinen 
Code aber noch nicht angeschaut.

> Dennoch denke ich das es viel besser gehen muss. Statt der delays muss
> ich doch irgend etwas anderes einstezen können.
>
> Das mit dem Fast PWM hab ich nicht so richtig kapiert...
Das Fast PWM ist Hardware-PWM. Hat zu heißen, dass du einmal alles 
einstellst und die PWM dann dauerhaft läuft. Der Controller kann 
nebenbei was anderes machen. Wenn sich bei deinem Eingangssignal die 
Pulsweite ändert kannst einfach einen neuen (angepassten) Wert ins 
Compareregister des Timers schreiben und die Hardware des Controllers 
macht den Rest.

Gruß
Michael

von Michael L. (eagle87)


Lesenswert?

Michael L. schrieb:
>> Und das Signal am Ausgang lege ich dann auf ein Mosfet der den Motor
>> betreibt. Ist das Richtig?
> Das stimmt soweit. Bei größeren Mosfets, oder wenn die Flanken nicht so
> steil oder steiler sein sollen kann es sein dass man noch ne zusätzliche
> Verschaltung brauch. Aber bei deinem Fall gehts glaub erstmal auch ohne.

Achja, das Bezog sich nur auf die Beschaltung vom Gate. Die 
Freilaufdiode darfst nicht vergessen. Ein Motor ist ja ne induktive 
Last.

von Axel R. (Gast)


Lesenswert?


von Axel R. (Gast)


Lesenswert?


von Digit-22 N. (digit-22)


Lesenswert?

Super geil werde mich mal da durch arbeiten.

Danke schonmal.




LG
Shabi

von Kille H. (kille)


Angehängte Dateien:

Lesenswert?

Hi Shabi,

habe das neulich auch schnell mal mit Arduino zusammenkopiert. Mein 
Sketch hab ich dir mal angehängt. Steuer damit einen 550 Motor in einem 
Boot (hatte grad kein Regler da).

Ich lasse das auf einem Mega88 laufen, der dann den N-Fet ansteuert. Das 
wars. Von daher müsste der Code auch auf den PCBs vom Axel R. laufen.

Grüße

von Digit-22 N. (digit-22)


Lesenswert?

Hej Kille,

Danke für den Code. Aber leider blicke ich da nicht durch. Ich wüsste 
jetzt auch nicht wie ich den auf mein Atmega8 anpassen könnte.
Brauche ich da nicht noch Bibliotheken wie z.b. hier für:
1
#include <Timer1.h>
2
#include <ServoIn.h>

Blicke den Code irgendwie nicht durch.


LG
Shabi

von Kille H. (kille)


Lesenswert?

Ach ja klar. Das sind die Bibliotheken von dem ArduinoRCLib.

Findest du unter:
http://sourceforge.net/projects/arduinorclib/

Die kannst du dann der Arduino Umgebung hinzu fügen.

Für den Atmega8 wird das leider nicht so einfach. Der kann kein pin 
change interrupt. Hier würde ich auf den Pinkompatiblen Atmega88 oder 
besser 168 ausweichen.

Dann musst du eigentlich nur noch das passende Arduino Board (mit einem 
Atmega168) auswählen und schon kannst du die HEX flashen. Wo sich die 
befindet verrät dir:
http://arduino.cc/en/Hacking/BuildProcess

Leider ist der Code nicht ganz simpel. Du kannst dir auch noch die 
Beispiele ansehen.

Grüße

von Axel R. (Gast)


Lesenswert?

Hier sollte man dann aber doch mal die Verhältnismäßigkeit wahren. Wenn 
unser  Shabi  einen Code vorstellt, der sagen wir ungewöhnliche. 
"Programmierstil" Blicken lässt, brauchst Du nicht mit einr komplett 
Anderen Umgebung ankommen. Besser waere hier ein Avrgcc Beispiel 
gewesen.

von Digit-22 N. (digit-22)


Lesenswert?

Hehe ja ich weiß meine Codes sind sehr barbarisch. Bin ja noch am 
lernen.
Ich denke erst sollte das ganze funtionieren und dann mach ich mich an 
die Feinarbeit.

Ich wäre schon sehr glücklich wenn es irgendwie ordentlich funktioniert 
und ich den Code verstehe.
Das ist das wichtigste für mich.



LG
Shabi

von Digit-22 N. (digit-22)


Lesenswert?

So hab noch was im Netz gefunden. Der Code erzeugt Fast PWM am PB1.
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
4
int main(void)
5
{
6
7
  DDRB = 0x02;                         // Setup PB1 as output
8
  DDRC = 0x03;                         // Setup PC0 and PC1 as output
9
10
  ICR1 = 1000;                         // Set TOP to 10000
11
  OCR1A = 500;                         // Set Dutycycle to 10%
12
13
  
14
  
15
  TCCR1A = (1<<WGM11)|(1<<COM1A1);     // Set Timer1 in Phase Correct Mode
16
  // with ICR1 as TOP value. Set OC1A
17
  TCCR1B = (1<<WGM13)|(1<<CS10);       // on compare match and clear OC1A
18
  // on BOTTOM. Clock Prescaler is 1024
19
  
20
  
21
  TIMSK |= (1<<TOIE1) | (1<<OCIE1A);   // Enable Timer 1 Overflow
22
  // and Compare interrupt
23
  sei();                               // Set the I-bit in SREG
24
25
  for(;;);                             // Endless loop
26
  // main() will never be left
27
28
  return 0;                            // This line will never be executed
29
}
30
31
// Interrupt subroutine timer 1 overflow
32
ISR(TIMER1_OVF_vect)
33
{
34
  PORTC ^= 0x01;                       // Toggle Pc0
35
  PORTC ^= 0x01;                       // Toggle PC0
36
}
37
38
// Interrupt subroutine timer 1 compare A match
39
ISR(TIMER1_COMPA_vect)
40
{
41
  PORTC ^= 0x02;                       // Toggle PC1
42
  PORTC ^= 0x02;                       // Toggle PC1
43
}



Wenn ich diesen Wert "OCR1A = 500;"  verändere, ändert sich die Drehzahl 
an meinem Motor. Der Motor läuft sehr ruhig und sauber.
Bei 100 läuft der motor schneller und bei 500 langsamer...

Jetzt ist die Frage wie bekomme ich diesen Code in meinem Code eingebaut 
so das ich mit meinem PWM vom RC Empfänger diesen Wert "OCR1A = 500;"
veränderen kann.


Hat da einer ne idee?




LG
Shabi

von Michael L. (eagle87)


Lesenswert?

Shabi N. schrieb:
> So hab noch was im Netz gefunden. Der Code erzeugt Fast PWM am PB1.
Nein, da ist Phase Correct PWM eingestellt. Funktioniert auch, aber Fast 
PWM wär etwas leichter verständlich. Auf Seite 97/98 im Datenblatt ist 
ne Tabelle für die Einstellungen der WGM1-Bits.

Achja, nimm vll besser Timer2 für die PWM. Timer1 brauchst ja schon für 
Input capture. Mit Input Capture hab ich zwar noch nichts gemacht und 
kann nicht sicher sagen ob das zusammen funktionieren würde, aber mit 
zwei getrennten Timern wirds höchst wahrscheinlich einfacher.

Mein Vorschlag wäre erst eine Funktion für die PWM zu schreiben, die du 
komplett verstehst und danach diese Funktion in dein Programm 
einzubauen. Also z.B. sowas:
1
void pwm_handler(uint8_t value)
2
{
3
...
4
}

Für was sind die beiden Interrupts?

Was für Hardware verwendest du bisher? Programmer? Steckbrett? Eigene 
Schaltung?

Gruß
Michael

von Kille H. (kille)


Lesenswert?

In deiner Variable aktuell_pwm_h speicherst du die Länge des high 
RC-Signals.

Grob gesagt, wenn das Signal 1 ms lang ist, muss dein OCR1A 1000 sein. 
Bei 2ms muss dein OCR1A 0 sein.

D.h du musst nur deine Variable aktuell_pwm_h umrechnen auf den neuen 
Bereich. Ich habs mit Arduino so gemacht:

map(g_values[0],UNTERGRENZE,MAXIMAL,0,255);

Die Passende Funkton dazu lautet:
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + 
out_min;
}


Ich weis jetzt nicht welche Werte deine Variable aktuell_pwm_h annehmen 
kann... Wenn es z.B. 60-120 ist währe die Umrechnung (ungetestet) z.B. 
so:

OCR1A = 1000-(aktuell_pwm_h)*(1000)/(120-60);

Grüße

von axelr. mit netbook (Gast)


Lesenswert?

So,
ich habe nochmal gegen gelesen.
Shahib sagt uns mal genau, wo sein Fet drann hängt, wie der Aufbau 
aussieht, welchen Controller er berwendet. Wenn genug Licht vorhanden 
ist, kann er gern mal ein Foto machen. Aber ein scharfes! ;)
Diese Info sind wichtig. Dann braucht man evtl. nicht im OC Interrupt 
mit den Pins wackeln. Das macht der Controller dann von selbst. Dazu 
muss der Motor dann aber auch an den speziellen Pins drann sein, klar.

( schreibt sich schon besser, als auf dem Eierphone... )

Axelr.

von Stephan (Gast)


Lesenswert?

naja ein OPV tut es ja auch.
Analoge Steller waren relativ einfach aufgebaut.
Ein Eingang auf einen Sägezahn, der Andere an den Empfänger und den 
Ausgang auf den MSOFET. Feddich is.

von Digit-22 N. (digit-22)


Angehängte Dateien:

Lesenswert?

Also in momment teste ich alles mit nem Mega8 aufm Steckbrett.
Der µc wird extern über einen 4MHz Quarz getaktet.

Ich habe einen kleinen Bürstenmotor der von einem Transistor BC328 
angesteuert wird. An der Basis des Transistors habe ich direkt das PWM 
Signal drauf.

Das heißt wenn ich den Code mit dem Phase Correct PWM auf dem µC spiele, 
habe ich am PB1 das PWM Signal liegen was direkt auf die Basis des 
Transistors geht.

Der Motor läuft viel besser und sauberer wie mit meinem Code.

Hier noch ein Bild vom Aufbau. Befürchte aber das da keiner durchblicken 
wird da alles etwas kaotisch ist und ich auch noch andere Schaltungen 
aufm Brett habe. hehe


LG
Shabi

von Axel R. (Gast)


Angehängte Dateien:

Lesenswert?

Stimmt sieht keiner durch.
Der Motor am Kollektor oder am emitter?
Sieht mir nach Kollektor gegen Minus aus, emitter gegen Plus. Für den 
pnp schon richtig, fehlt nur der Basisvoewiderstand und die 
Freilaufdiode. Der rechte Kasten ist dein Servotester? Kannst ruhig 
dazuschreiben. Ist nicht schlimm;)


Edit was ist Denn mit dem Seitenverhältnis von deinem Bild passiert? 
Sieht ja komisch aus. :)

von Digit-22 N. (digit-22)


Lesenswert?

Der Motor ist am Kollektor und Emmiter ist am Pluspol. Ist ja ein PNP...
Da es einfach nur schnell zum testen aufgebaut ist, habe ich keinerlei 
Vorwiederstände am Transistor oder Freilaufdiode am Motor...

Hab einfach in die Kiste gegriffen, AAAH BC328 PNP genau das was ich 
suche.

Und ja das ist ein Servotester sonst müsste ich immer die Gute Anlage 
auspacken.

Bildvehäldnisse sind so weil ich das Bild etwas bearbeitet habe damit es 
nicht zu groß für den Upload wird.


LG
Shabi

von Michael L. (eagle87)


Lesenswert?

Stephan schrieb:
> naja ein OPV tut es ja auch.
> Analoge Steller waren relativ einfach aufgebaut.
> Ein Eingang auf einen Sägezahn, der Andere an den Empfänger und den
> Ausgang auf den MSOFET. Feddich is.

Wie soll das funktionieren? Das Signal vom Empfänger ist entweder High 
oder Low, der Sägezahn (fast immer) irgendwo dazwischen. Am Ausgang 
kriegst also genau das gleiche Signal wie am Empfänger hast. Höchstens 
noch Invertiert.

von Stephan H. (stephan-)


Angehängte Dateien:

Lesenswert?

so zB.
Ist etwas mehr Bauteifaufwand aber 100 Mal schneller aufgebaut als 
selber programmiert.

Quelle: "Drehzahlregler" von Dipl. Ing. L.Retzbach

Bei Einsatz eines LL FET können einige Sachen noch entfallen

von Digit-22 N. (digit-22)


Lesenswert?

Hallo Stephan. Schöne Schaltung und vielendank für deine Mühe.
Aber wie oben schon mehrfach beschrieben. Ich möchte micro ultra leicht 
Modelle realisieren und das lässt sich nunmal nur mit µC realisieren.
Ein Controller mit 4 Fets und etwas SMD wiegt gerade mal 1 bis 2 gram.

Bei diesen Modellen ist 1g zu viel schon fatal...

Dennoch möchte ich mich bedanken.


Genial wäre es wenn man aus den beiden Codes irgendwie ein paket machen 
könnte...




LG
Shabi

von Michael L. (eagle87)


Lesenswert?

@Stephan
So glaub ich schon eher dass das funktioniert. Ist aber deutlich mehr 
als nur ein OPAMP.

@Shabi
Apropos klein und leicht: Wiso nimmst du einen ATmega8 mit Quarz? Wäre 
für dich ein kleiner ATtiny der mit internem Takt läuft nicht besser 
geeignet?

von Stephan H. (stephan-)


Angehängte Dateien:

Lesenswert?

Shabi N. schrieb:
> Hallo Stephan. Schöne Schaltung und vielendank für deine Mühe.
> Aber wie oben schon mehrfach beschrieben. Ich möchte micro ultra leicht
> Modelle realisieren und das lässt sich nunmal nur mit µC realisieren.
> Ein Controller mit 4 Fets und etwas SMD wiegt gerade mal 1 bis 2 gram.
>
> Bei diesen Modellen ist 1g zu viel schon fatal...
>
> Dennoch möchte ich mich bedanken.
>
>
> Genial wäre es wenn man aus den beiden Codes irgendwie ein paket machen
> könnte...
>
>
>
>
> LG
> Shabi


ich könnte dir ja jezt einen Regler( Steller) zeigen den ich benutze....
Das Relais brauchst Du nicht, ist für die Umpolung.

Ist ein PIC 12Fxx ein MOSFET und ein Spannugsregelr wegen BEC.
Alles Selbstlernend.

Nur von NIX kommt auch NIX.

von Stephan H. (stephan-)


Lesenswert?

Michael L. schrieb:
> @Stephan
> So glaub ich schon eher dass das funktioniert. Ist aber deutlich mehr
> als nur ein OPAMP.
>
> @Shabi
> Apropos klein und leicht: Wiso nimmst du einen ATmega8 mit Quarz? Wäre
> für dich ein kleiner ATtiny der mit internem Takt läuft nicht besser
> geeignet?

So........ viel mehr ist es auch nicht.
Ist halt ein Doppel OPV.
Unterspannung oder Verlust des Signals sind natürlich nicht inbegriffen.

von Digit-22 N. (digit-22)


Lesenswert?

Hallo der Mega8 ist nur zum testen. Später will ich dann Tinys für 
einzelne Regler nehmen oder z.b. Mega168  für mehere Motoren 
gleichzeitig.


LG
Shabi

von Kille (Gast)


Lesenswert?

Bei mehr Motoren wirst du nicht drum rum kommen einen mit Pinchange 
interrupt zu nnehmen!

von Axel R. (Gast)


Lesenswert?

Stephan Henning schrieb:
> so zB.
> Ist etwas mehr Bauteifaufwand aber 100 Mal schneller aufgebaut als
> selber programmiert.
>
> Quelle: "Drehzahlregler" von Dipl. Ing. L.Retzbach
>
> Bei Einsatz eines LL FET können einige Sachen noch entfallen

In kleinster weise zeitgemäß. Sowas von Achtziger.

von Michael L. (eagle87)


Lesenswert?

Shabi N. schrieb:
> Hallo der Mega8 ist nur zum testen. Später will ich dann Tinys für
> einzelne Regler nehmen oder z.b. Mega168  für mehere Motoren
> gleichzeitig.

Wenn mehrere Motoren ansteuern willst würd ich das Empfängersignal auch 
mit Pinchange Interrupts einlesen. Auch bei zwei Motoren reicht dir dann 
noch ein 6 oder 8 Pinner. Bei 6 Pins brauchst dann halt HVSP.

Hast du noch andere Controller vorrätig? Der ATmega8 hat ja keine 
Pinchange Interrupts

von Digit-22 N. (digit-22)


Lesenswert?

Hi das hört sich doch super an. Pinchange hab ich noch nie gehört muss 
ich mir mal anschauen. Was macht es denn genau ??

Ich hab noch ein paar attiny 85 da will aber heute noch bestellen.
Was würdet ihr mir raten. Mega48, 88, 168...
Ich bestell gleich die smd varianten mit. Hab mal vor lager zeit hier im 
forum mal ein Angebot von fertigen Modulen gesehen wo die Controller 
inkl quarz und etwas smd fertig verlötet waren...




Lg
Shabi

von Axel R. (Gast)


Lesenswert?

passt doch: ein Eingang, vier Ausgänge, Plus, Mius, Reset.
Ich würde den Tiny85 nehmen. Ich würde die QFN Variante nehmen und bei 
Vishay klitzekleine N-Mosfets kommen lassen. (Si8812DB)
Die müsste ich dan aber auch im Labor zusammenlöten... :(

von Digit-22 N. (digit-22)


Lesenswert?

Ah ok ich hab vergessen zu erwähnen es kommen 4 unterschiedliche pwms 
rein und sollen dann vier unterschiedliche Motoren ansteuern. Das heißt 
im Prinzip 4 Separate Regler in einem Controller.

Z.b. pwm1 hat zur gleichen Zeit einen anderen wert wie Pwm2, pwm3, 
pwm4...

Diese funktion benötige ich z.b. bei Microcopter mit vier Motoren wo 
jeder Motor für sich angesteuert wird.

Welcher Controller kann denn sowas. Der müsste doch wenn ich es richtig 
verstanden habe 8 timer haben. 4 für das eingangs pwm und 4 für das 
ausgangs pwm.

Im Multicopter Bereich wird sehr häufig der Mega168 verwendet.
Hab auch ein Controller Board mit nem Mega48.



Lg
Shabi

von Axel R. (Gast)


Lesenswert?


von Axel R. (Gast)


Lesenswert?

Die PWM's haben zwar alle unterschiedliche Werte, kommen aber 
NACHEINANDER bei Dir eingeflogen. Somit können die ruhig auf einen PIN 
gelegt werden. nach der vierten PWM ist erst mal "ewig" Ruhe, bevor die 
erste wieder "vorbeischaut". In der Zeit kannst Du dann gemütlich alles 
abarbeiten.

von Axel R. (Gast)


Lesenswert?

Denn Du willst doch klein bauen !!

von Digit-22 N. (digit-22)


Lesenswert?

Hej alex  danke für die Liste.

Das wäre dann ein Summensignal wo alle pwms zusammen über eine Leitung 
kommen. Es gibt Empfänger die ein Summensignal erzeugen können aber 
nicht alle. Hiebei werden tatsächlich 4 Pwms hintereinander 
rausgespuckt.


Aber wenn ich einen normalen Empfänger habe wo z.b. 4 Ausgänge, dann hab 
ich kein Summensignal mehr sonder 4 separate Signale.

Diese Signale kann ich doch nicht einfach parallel schalten ?
Geil wäre es auf jedenfall.


Lg
Shabi



Ps:sorry für Schreibfehler aufm tab lässt sich nicht so toll schreiben.

von Axel R. (Gast)


Lesenswert?

Aufl eierfone auch nicht kein Problem

von Axel R. (Gast)


Lesenswert?

Bin wieder am PC :)

Vielleicht baust Du ja erstmal in groß und testest alles schön aus. und 
mit wachsender Erfahrung schrumpft dann die Baugröße.

Du kannst Dir natürlich das Summensignal

a) abgreifen oder
b) "zurücksummieren"

einfach parallelschalten der Ausgänge wird nicht gehen, wegen der dann 
auszufechtenen Kämpfe der Ausgänge untereinander.
vier Dioden und ein Masseableitwiderstand (Pulldown) sollten den Job 
aber erledigen...

von Axel R. (Gast)


Lesenswert?

Ich weiss, Du hast sicher auch noch anderes um die Ohren, aber ich hatte 
den Link geteilt:
http://www.mikrocontroller.net/topic/goto_post/1938549
da geht das auch..

von Digit-22 N. (digit-22)


Lesenswert?

Ja natürlich. Ich baue ja erstmal alles aufm steckbrett mit grossen 
Komponenten auf und wenn alle läuft,  gibts smd...
Deswegen wollte ich ja die Teile dann auch in smd mit bestellen.


Hhm wenn alle Signale parallel liegen mit dioden und Widerstände,  woher 
weiss ich dann welches Signal wann ankommt?

Bei den Empfänger mit summensignal ist das vor konfiguriert.
Und die gegenseite muss auch genau wissen wann welches Signal ankommt 
damit z.b. Querruder und Seitenruder nicht verwechselt werden.

Also nicht böse sein aber ich will definitiv normale Empfänger ohne 
Summensignal nehmen...

Ich hätte da eine idee. Ist es nicht möglich z.b. 4 pins als eingang zu 
definieren, die 4 Signale drauflegen und im code die Eingänge nach 
einander auszulesen?  Ich hab mal was von multiplexer gelesen..

Z.b. Eg1 wird ausgelesen und gleich auf AG1 geben.
     Dann
     Eg2 wird .......                   Ag2 geben.
     .... dann wieder von vorn...

So könnte man Eg1 und Ag1  als din kanal sehen...

Und ich würde theoretisch mit 2 Timer auskommen.

:-) ist nur ne idee.Wie gesagt bin noch am lernen.




Lg
Shabi

von Axel R. (Gast)


Lesenswert?

>Bei den Empfänger mit summensignal ist das vor konfiguriert.

Was? Was soll da vorkonfiguriert sein?

Alle 20millisekunden werden (hier in dem Fall) VIER Pakete gesendet, 
die, aufeinander folgend 4x2.2millisekunden lang sein können (4x 
Vollgas). Du hast also wurstkäs' nach achteinhalb millisekunden ein Loch 
von ca. 12 millisekunden, bevor der Spaß von vorn los geht. Finde nun 
den ersten Kanal. Du programmierst Dir einfach ein Timeout von 10ms, 
welches parallel mitläuft. Wenn das um ist, dann ist der nächste Impuls 
dein Kanal Nummer Eins. Du kannst - selbstverständlich - auch die Kanäle 
mit vier einzelnen Servokabeln und vier Servosteckern auf vier Eingänge 
legen. Kannst Du ja machen: ich dachte, Du wolltest Gewicht sparen ;) An 
das Summensignal kommt man sicher im Empfänger drann. Was hast Du für 
einen Empfänger?

edit:
 "paket" ist hier übetrieben, H-Pegel eben

von Digit-22 N. (digit-22)


Lesenswert?

Also meine Empfänger sind z.b. 2g Empfänger von spektrum oder orange.
Die haben jeweils 4 Kanäle.

:-) ich benutze natürlich keine Stecker und normale kabel...
Alles wird aufgelötet. Ich löte sogar die Stiftleiste vom Empfänger aus 
um Gewicht zu sparen...

Ich achte da ja schon drauf.

Zuvor hab ich immer die Elektronik von Micro servos genommen aber die 
sind nicht so toll...

An den normalen Empfänger gibt es soweit ich weiß kein summensignal. 
Wenn ich z.b. einen Empfänger mit Summensignal haben möchte,  muss ich 
extra einen kaufen.

Ich hätte jetzt auch keinen hier um es zu testen.




Lg
Shabi

von Axel R. (Gast)


Lesenswert?

Hast Du einen DX8 oder einen DSM2 AR6300? Lass Dir doch nicht alles aus 
der Nase ziehen...
Man kann, wenn man genau solch ein Teil mal in der Hand hält, mal sehen 
wo man das Summensignal abgreifen kann.

von Digit-22 N. (digit-22)


Lesenswert?

Also Dx8 mit dsmx und dsm2. Ist schon die aktuellere Version.

Die Sache ist ja auch dies. Wenn ich einen microcopter baue, habe ich 
einen flightcontroller der quasie die lage des copters regelt in dem er 
die motoren einzel ansteuert.  Das würde dann heissen ich habe 4 
motorregler und 4 Ausgänge beim Fcontroller die separat angeschlossen 
werden.

Das ist der hauptgrund warum ich unbedingt die Signale einzel auslesen 
muss.

Als Beispiel: ich hab nen kleine FController der etwa 8g wiegt.
Wenn ich die ganzen teile wie stiftleisten, schalter... die nicht 
benötigt werden auslöte, bin ich bei ca. 4g bis 5g. Mein Empfänger ohne 
stiftleisten könnte ich eventuell auf ca 1g bringen. Jetzt brauche ich 
nur noch nen Motorregler mit 4 EG und 4 AG um den an die 4 AG des 
FControllers anzuschließen.

Ich hab schon einige Copter wie tricopter, quadrocopter, Hexacopter...
Mit diversen FController Boards gebaut. Von KK, blackBoard, Free flight 
Board...Bis hin zu Multiwii Boards gebaut und bei keinen habe ich je am 
Ausgang ein Summensignal gesehen. Würde auch schlecht gehen weil an 
jedem Ausgang ein Motorregler dran kommt.

Das zu meinem Vorhaben.  Deswegen kann ich schon mal nichts mit 
Summensignal anfangen.




Lg
Shabi

von Michael L. (eagle87)


Lesenswert?

Shabi N. schrieb:
> Ah ok ich hab vergessen zu erwähnen es kommen 4 unterschiedliche pwms
> rein und sollen dann vier unterschiedliche Motoren ansteuern. Das heißt
> im Prinzip 4 Separate Regler in einem Controller.

Bei 4 Motoren müsste der ATtiny24/44/84 passen. Der hat 4 PWM Ausgänge 
und mehr als genug Pins für Pinchange Interrupts.

Um das Servosignal einzulesen musst bei jedem Pinchange schauen welcher 
Eingang verändert wurde, ob es eine steigende oder fallende Flanke war 
und den Zeitpunkt entsprechend abspeichern. Nach einer fallenden Flanke 
die Differenz der Zeitpunkte berechnen und schon weißt wie lange der 
Impuls war. Die Impulslänge kannst dann so umrechnen wie du es brauchst.

Gruß
Michael

von Axel R. (Gast)


Lesenswert?

Ich hatte eigentlich schon gewundert, wie du den Copter gerade in der 
Luft halten willst. Dann geht es nicht anders, wenn du die 
Kanalinformationen "unterwegs" noch manipulieren musst.
Da sollte dann jeder mit einem aktuellen tiny und einem breiteren Port 
gehen. Tiny 861 vielleicht. Den gibt's auch in klein.

von Digit-22 N. (digit-22)


Angehängte Dateien:

Lesenswert?

Jop genau.

Jetzt hätte ich da noch eine Idee.
Ich habe hier ein KK Board V2.1 Ist die Grüne Version.
Den gibt es bei den lieben Chinesen und nennt sich:
HobbyKing_Multi_Rotor_Control_Board_V2_1_Atmega168PA

Das Board war so ziemlich das erste was man bei HK kaufen konnte.
Auf diesem Board ist ein Atmega168PA und man kann es als Aero, Bicopter, 
Tricopter, Quadrocopter und Hexacopter nutzen.
Einfach die passende Firmware drauf...

Das Board hatt 4 PWM Eingänge Motor, Querr, Höhenr, Seitenr und kann wie 
gesagt bis zu 6 Motoren/Regler über PWM ansteuern.

Jetzt habe ich mir volgendes gedacht:
Da ich ja für meine Copter solch einen Flightcontroller benutzen will,
könnte ich doch wenn ich den Quellcode habe die PWM Frequenz an den 
Ausgängen
erhöhen und da direkt meine Fets dran machen.
Ist ja gnau so wie ich jetzt mit meinem Atmega8 das gemacht habe.

So wer suchet der findet. Hab mir die halbe Nacht um die Ohren 
geschlagen und nach dem Quellcode für diese Boards gesucht und auch 
fündig geworden.
Allerdings ist der Code für die Blue Version. Der hat bis aufm 
Controller genau die gleichen Komponenten drauf.
Am anfang vom Code jedoch für 168 und 328 Megas.

Soweit so gut. Hab mir den Code angeschaut und gesucht. Auch etwas 
gefunden wo die Frequenz der Aufgänge fest gelegt werden. Da steht im 
Kommentar 50HZ.

Ich wollte gern mal etwas rum probieren nur das Problem ist das mein 
Compiler mir einen Strich durch die Rechung macht und zich 
Fehlermeldungen rausspukt.

Naja ich lad euch mal den Code hier als Dateianhang hoch, vielleicht hat 
der eine Oder Andere ja ne Idee wie mal den Code Compilieren kann.


Break; :-)


Achja ich hab mit Hilfe eines Freundes es hin bekommen in mein Atmega8 
ein PWM vom Empfänger/Servotester an zulegen und am Ausgang ein Schönes 
PWM mit ca 450 HZ rauszuspucken. Kann den Motor jetzt schön steuern.
Werde die Auflösung noch etwas erweitern und gut ist.
Es seiden irgendwer hat nen besseren Vorschlag.
Hier mein Code für Mega8:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <util/delay.h>
4
5
#define F_CPU 4000000UL
6
7
volatile int flanke=0;
8
volatile int aktuell_pwm_l=0;
9
volatile int aktuell_pwm_h=0;
10
11
ISR(TIMER1_CAPT_vect)
12
{
13
  if (flanke==0)
14
  {
15
    TCNT1H = 0;             
16
    TCNT1L = 0;
17
    TCCR1B&= ~(1<<ICES1); 
18
    flanke=1;
19
  }
20
  else
21
  {
22
    flanke=0;
23
    TCCR1B|=(1<<ICES1);   
24
    aktuell_pwm_l=ICR1L;   
25
    aktuell_pwm_h=ICR1H;    
26
  }
27
}
28
29
void init_prozedur(void)
30
{
31
  TCCR1B |= (1<<WGM12) | (1<<ICNC1)|(1<<ICES1)|(1<<CS11) | (1<<CS10);
32
  TIMSK |= (1<<TICIE1);                      
33
34
  sei();
35
}
36
37
int main (void)
38
{
39
  init_prozedur();
40
41
  DDRB=0x06;        
42
  TCCR1A = (1<<WGM10)|(1<<COM1A1)|(1<<COM1B1);             
43
  
44
  while(1)
45
  {
46
    if (aktuell_pwm_l >= 60 && aktuell_pwm_l < 65)
47
    {
48
      OCR1A = 255;
49
    }
50
    if (aktuell_pwm_l >= 65 && aktuell_pwm_l < 70)
51
    {
52
      OCR1A = 231;
53
    }
54
    if (aktuell_pwm_l >= 70 && aktuell_pwm_l < 75)
55
    {
56
      OCR1A = 210;
57
    }
58
    if (aktuell_pwm_l >= 75 && aktuell_pwm_l < 80)
59
    {
60
      OCR1A = 189;
61
    }
62
    if (aktuell_pwm_l >= 80 && aktuell_pwm_l < 85)
63
    {
64
      OCR1A = 168;
65
    }
66
    if (aktuell_pwm_l >= 85 && aktuell_pwm_l < 90)
67
    {
68
      OCR1A = 147;
69
    }
70
    if (aktuell_pwm_l >= 90 && aktuell_pwm_l < 95)
71
    {
72
      OCR1A = 126;
73
    }
74
    if (aktuell_pwm_l >= 95 && aktuell_pwm_l < 100)
75
    {
76
      OCR1A = 105;
77
    }
78
    if (aktuell_pwm_l >= 100 && aktuell_pwm_l < 105)
79
    {
80
      OCR1A = 84;
81
    }
82
    if (aktuell_pwm_l >= 105 && aktuell_pwm_l < 110)
83
    {
84
      OCR1A = 63;
85
    }
86
    if (aktuell_pwm_l >= 110 && aktuell_pwm_l < 115)
87
    {
88
      OCR1A = 42;
89
    }
90
    if (aktuell_pwm_l >= 115 && aktuell_pwm_l < 120)
91
    {
92
      OCR1A = 11;
93
    }
94
    if (aktuell_pwm_l >= 120 && aktuell_pwm_l < 125)
95
    {
96
      OCR1A = 1;
97
    }
98
  }
99
}


LG
Shabi


PS: Sorry für den riesen Text ;-).

von Axel R. (Gast)


Lesenswert?

Na wenn Du die Sourcen vom Flightcontroll bekommen hast, besorg Dir doch 
einfach die Sourcen vom Brushless Motor Speed Controller und ändere dort 
die Software auf Brushed. Ist einfacher, denke ich mal...

von STK500-Besitzer (Gast)


Lesenswert?

Shabi N. schrieb:
> 450 HZ

Copter-Regler arbeiten mit 400kHz... (oder so ähnlich).
Deinen kann ja sogar ich trotz Tinitus noch hören.

von Kille H. (kille)


Lesenswert?

Hi Shabi,

warum der Aufwand? MultiWii kann doch auch direkt PWM für Bürstenmotoren 
erzeugen. Dann brauchst du nur noch 4 fets und gut ist es.

Wenn du es noch leichter haben willst, kannst du auch den Empfänger noch 
integrieren:
http://www.rcgroups.com/forums/showthread.php?t=1798913
Da haben die Jungs ein Flysky Modul direkt in Multiwii integriert 
(ziemlich weit hinten im Thread).

Wenn du da ein Board komplett selbst designed kommst du da auf jeden 
Fall unter dein angestrebtes Gewicht!

So etwas gibt es auch fertig z.B.
http://www.goodluckbuy.com/mini-micro-arf-quadcopter-mwc-flight-control-multicoptermotor-prop-kit-new-version.html

Ich hab auch mal vor so einen Microcopter auf MultiWii Basis aufzubauen. 
Mit oder ohne "angeflantschtes" FlySky Modul. Könnten uns da ev. 
zusammentun.

Warum hast du eigentlich nicht den Code benutzt zum umrechnen den ich 
dir mal gepostet hab?

von Digit-22 N. (digit-22)


Lesenswert?

Hej Kille das ist ja mal der Hammer.
Der kleine Copter und das für den Preis...

Die Idee mit dem Multiwii ist garnicht mal so schlecht.
Hab mal etwas gegooglet und heraus gefunden das einige die Arduino pro 
mini
nehmen und die multiwii 1.8 drauf machen. Die 1.8 hat direkt PWM für 
Fets...

Also ich weiß definitiv das man sogar mit nem Atmega8 einen kompletten 
Copter bauen kann. Im Mega8 ist dann alles drin von der Regler Funktion 
bis hin zu auswertung von 3 Achs Gyros um die Lage zu steuern...
Es gibt einen Typen der sowas selber entwickelt hat und fliegt ist der 
Hammer. Muss mal Seine Homepage raussuchen...
Seine Modell hießen glaub ich Smartflyer oder Smarty.

Ich baue schon seit ca 2,5 Jahren Copter und träume seit dem immer davon 
einen Ultra Microcopter zu entwickeln und bauen. Aktuell habe ich noch 4 
Niegel Nagel neue XCopter mit 600mm und das Multiwii 328P Board drauf.
Fix  und fertig und sehr sauber gebaut nur noch empfänger dran und los 
gehts...

Also wer Interesse hat.... :-)

Um auf dein Angebot zurück zu kommen; einen Copter zusammen zu entwickel 
wäre nicht schlecht. Ich habe alles was Maschinen angeht da.
Große Portal CNC Fräse, Drehmaschine, normale Fräsmaschine...
Also das Standart Werkzeug was man halt so hat.
Platinen fräsen ist auch kein Thema. Meine ganzen Stromverteiler Boards 
für die Copter fräse ich auch selber.

Also wann wollen wir loslegen?



LG
Shabi

von Kille H. (kille)


Lesenswert?

Hi Shabi,

Multiwii ist mittlerweile schon bei 2.2 und PWM ist Standardfuntkon.
Schau mal hier:
http://www.ebay.de/itm/RC-MultiWii-NanoWii-ATmega32U4-Micro-Flight-Controller-USB-GYRO-ACC-on-Board-/121101526837?pt=RC_Modellbau&var=&hash=item1c3236a735

Die Seite von Smartflyer hab ich gefunden. Aber ich denke Multiwii ist 
hier die Plattform der Wahl. Auch nur ein Controller für alles! Incl. 
der großen Comunity!

Werde mir vielleicht mal ein Multiwii Board holen und ein wenig 
experimentieren mit dem Code von den rcgroups jungs. Finde das sehr 
spannend die Möglichkeit den Flysky Empfänger direkt auf dem Board zu 
integrieren. Kleiner und leichter geht es bei einem Eigenbau dann wohl 
nimmer!
Mal sehen wo da die grenze liegt. Kleiner als der Hubsan X4 sollte es 
schon werden! Auch sollte der ganze Copter dann preislich in etwa bei 
den Kosten für ein einzelnes Multiwii Board liegen.

So eine extra designete Platine kann mann praktisch nicht mehr selbst 
fräsen... Aber für die Fälle gibt es ja die Dienstleister.

Zeitlich bin ich etwas eingespannt. Muss noch meine Wort Uhr fertig 
bauen, einen neuen Job suchen, in den Urlaub fahren, CP-Heli fliegen 
lernen usw... also immer noch zeit am Abend ein Board zu entwickeln ;-)!

Mach mir mal ein Angebot für dein Copter per PM!

Grüße

von Patrick (Gast)


Lesenswert?

Ist schon eine Weile her das hier was geschrieben wurde, aber ist es da 
zu einer lösung gekommen?

Stehe vor dem selben problem, allerdings gleich für 6 Motoren 
(Hexacopter).

Mit Multiwii ist es nicht möglich, da von der Firmware nur 4 Motoren 
(wenn pwm -> fet) unterstützt werden.

Das soll wohl angepasst werden können, aber da hab ich keine wie.



Wenn jemand eine Idee zu dem Einen oder dem Anderen hat, bin ich für 
jede Hilfe dankbar.



Gruß

Patrick

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.