Forum: Mikrocontroller und Digitale Elektronik BLDC Halbbrückenansteuerung


von Steffen H. (stef_fen)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

unter dem Artikel Brushless-Controller für Modellbaumotoren gibt es 
einen Schaltplan zum Beispiel einer Halbbrück inklusive Strommessung. 
Dazu wird beschrieben: "Der Widerstand R20 ist dazu da, dass auf dem 
Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft 
hängt (uC Pin als Eingang definiert). So wird nur ein einziger 
PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert 
also kein Soft-PWM oder sonst irgend ein Murks."

Link: 
http://www.mikrocontroller.net/articles/Brushless-Controller_f%C3%BCr_Modellbaumotoren

Das wollte ich jetzt testen. Der Controller ist ein Atmega 16. An PD7 
liegt das PWM Signal. PD6 stellt IN_A da. Der Widerstand R20 wurde wie 
in dem Beispiel gewählt. Zum Test habe ich anstatt des 
Halbbrückentreibers eine LED genommen. Doch leider ist die LED nicht 
aus.

1
#define F_CPU 8000000
2
#include <avr/io.h>
3
#include <stdlib.h>
4
#include <util/delay.h>
5
6
int main (void) {
7
8
DDRD |= (1<<PD7);
9
TCCR2 |= (1<<COM21);
10
TCCR2 |= (1<<WGM21) | (1<<WGM20);
11
TCCR2 |= (1<<CS22) | (1<<CS21) | (1<<CS20);
12
OCR2 = 128;
13
14
DDRD &= ~(1<<PD6);
15
16
//PORTD |= (1 << PD6);
17
18
while (1) 
19
{
20
  //blank
21
}
22
return 0;
23
}

Vielen Dank. Gruß Steffen

von Steffen H. (stef_fen)


Lesenswert?

Hat keiner eine Idee?

Gruß Steffen

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Auch wenn die die Atmels nicht anpacke...


Der Treiber soll Highside durchschalten: IN_A (PD6) auf high schalten 
und als Ausgang definieren.

Der Treiber soll Lowside durchschalten: IN_A (PD6) auf low schalten und 
als Ausgang definieren.

Der Treiber soll die PWM durchschalten: IN_A (PD6) auf egal schalten und 
als Eingang definieren.


PD6 kann das PWM-Signal übersteuern, das durch den Widerstand schwächer 
ist.

von Steffen H. (stef_fen)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

ich bin noch dabei mir einen BLDC Regler zu bauen. Damit ich nicht drei 
Timer zur PWM Erzeugung nutzen muss habe ich einen Timer gewählt der 
permanent läuft und jeweils über Widerstände auf die Ports der 
Higsidefets geht. Somit müsste sich doch die PWM überlagern können und 
der Fet entweder die PWM durchschalten oder abgeschaltet sein. Den 
Schaltplan habe ich angehängt. Würde das so funktionieren?

Vielen Dank. Gruß Steffen

1
//PHASE1 (U)
2
#define UH_ON  DDRD &= ~(1<<7); PORTD |= (1<<7); //PD7
3
#define UH_OFF  DDRD |= (1<<7); PORTD &= ~(1<<7);
4
5
#define UL_DDR  DDRD |= (1<<3); //PD3
6
#define UL_ON  PORTD |= (1<<3);
7
#define UL_OFF  PORTD &= ~(1<<3);

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.