Strumenti Utente

Strumenti Sito


ponteh

Applicazioni di elettronica di potenza

Risorse

Caratteristiche dei transistor:

Ponte H:

Altro:

  • Charge Pump per pilotare MOSFET a canale N (inglese)
  • Pompa di carica in italiano (la pagina è sulla RS232 ma questa soluzione viene usata anche nei gate driver per permettere l'utilizzo dei MOSFET a canale N come interruttori high-side (source)

Simulazioni

Datasheet e application notes

Software

Un programma per gestire il duty-cycle di un segnale PWM con la scheda Arduino:

// pin (i pin 0 e 1 sono impegnati per la trasmissione seriale)
const int pinStart = 8; // piedino da mettere a massa per attivare il PWM
const int pinStop = 9; // piedino da mettere a massa per disattivare il PWM
const int pinPWMup = 2; // piedino da mettere a massa per incrementare il duty-cycle
const int pinPWMdown = 3; // piedino da mettere a massa per diminuire il duty-cycle
const int pinPWM = 5; // piedino di uscita del segnale PWM (a 1kHz in quel piedino)
// altre variabili
int spinning = 0; // attiva o no il segnale PWM 
int duty = 100; // da 0 a 255 -> 0-100%
int PWMup; // stato pin che incrementa il duty-cycle
int PWMupPrec = 1; // stato precedente pin che incrementa il duty-cycle
int PWMdown; // stato pin che diminuisce il duty-cycle
int PWMdownPrec = 1; // stato precedente pin che diminuisce il duty-cycle
 
void setup() {
  pinMode(pinPWM,OUTPUT);
  pinMode(pinStart, INPUT_PULLUP); // pull-up interno al micro
  pinMode(pinStop, INPUT_PULLUP);
  pinMode(pinPWMup, INPUT_PULLUP);
  pinMode(pinPWMdown, INPUT_PULLUP);
  pinMode(13,OUTPUT); // LED 13 acceso quando gira il motore
  Serial.begin(9600); // debug su serial monitor
}
 
void loop() {
  // gira se pinStart a GND
  if (!digitalRead(pinStart)){
    spinning = 1;
  }
  // si ferma se pinStop a GND
  if (!digitalRead(pinStop)){
    spinning = 0;
  }
  // LED sulla scheda acceso se gira (PWM attivo) 
  digitalWrite(13, spinning);
  // attiva/disattiva PWM
  if(spinning){
    // attiva PWM
    analogWrite(pinPWM, duty);
  }
  else{
    analogWrite(pinPWM, 0);
  }
  // incremento/decremento duty-cycle
  PWMup = digitalRead(pinPWMup);
  PWMdown = digitalRead(pinPWMdown);
  if((!PWMup)&&PWMupPrec){
    if (duty+10 < 255) {
      duty += 10;
    }
    delay(20); // antirimbalzo
    Serial.println(duty);
  }
  if((!PWMdown)&&PWMdownPrec){
    if (duty-10 > 0) {
      duty -= 10;
    }
    delay(20);
    Serial.println(duty);
  }
  PWMupPrec = PWMup;
  PWMdownPrec = PWMdown;
}

Nel video qua sotto il codice in azione.

Questo sito Web utilizza i cookie. Utilizzando il sito Web, l'utente accetta la memorizzazione dei cookie sul proprio computer. Inoltre riconosci di aver letto e compreso la nostra Informativa sulla privacy. Se non sei d'accordo, lascia il sito.Maggiori informazioni sui cookie
ponteh.txt · Ultima modifica: 2021/03/29 16:27 da admin