Aiuto per Smart Power module, costruzione piccolo inverter

Inserire qui richieste sull'uso del forum.
fracampof
Messaggi: 132
Iscritto il: sab 28 mar 2020, 17:31

Aiuto per Smart Power module, costruzione piccolo inverter

Messaggio da fracampof »

Ciao a tutti amici elettronici in questi giorni di quarantena mi sono chiuso in laboratorio ha iniziato a fare un po' di esperimenti ma è arrivato il momento di sistemare lo smielatore una specie di lavatrice che per forza centrifuga estrae il miele dai favi il problema è che il motore non ha nessun tipo di controllo e va subito alla massima velocità girando molto sbilanciato per i primi minuti dato che non tutti i favi contengono la stessa quantità di miele.
L idea sarebbe di fare un piccolo e semplice inverter che tramite un potenziometro possa regolare la velocità di rotazione.
Il motore è un 250w trifase (ora collegato col condensatore alla rete di casa ) che ha come specifiche a triangolo 230v 1.38A e invece a stella 400v 0.8A.
Nel cassetto ho uno Smart Power module della Fairchild FSBS10CH60L che è un driver per motori trifase a igbt 600v 10a max .
A quanto ho capito bisogna controllare i 3 ponti a igbt con un segnale esterno .. il problema è che non so come generarlo .
Ho pensato a un microcontrollore tipo Arduino ma verrebbe una cosa troppo sofisticata per un banale smielatore .
Poi ho pensato di usare degli ne555 ma non ho idea di come farli lavorare sincronizzati e sfasati di 120 gradi.
Se avete schemi semplici già pronti o consigli sui componenti da impiegare sono ben accetti ,nei cassetti ho veramente di tutto quindi proponete 👍
Avatar utente
Pier Aisa
Amministratore
Messaggi: 2540
Iscritto il: ven 16 mar 2018, 9:43
Località: Bologna
Contatta:

Re: Aiuto per Smart Power module, costruzione piccolo inverter

Messaggio da Pier Aisa »

Secondo me l'idea di Arduino non è male Tutto sommato sono poi tre segnali di pilotaggio e il codice sorgente lo puoi prendere ad esempio dalla mia libreria che avevo portato a suo tempo dai un'occhiata a questo video se la cosa ti convince

https://www.youtube.com/watch?v=BWouNZAFWG0

https://www.youtube.com/watch?v=EcitbW0OPGw
fracampof
Messaggi: 132
Iscritto il: sab 28 mar 2020, 17:31

Re: Aiuto per Smart Power module, costruzione piccolo inverter

Messaggio da fracampof »

molto interessanti i video grazie ! allora opto per un microcontrollore ... nei cassetti ho vari pic di cui non ricordo il modello e un programmatore willem 5.0 ... il piu recente che ho è il 18f4550 mi chiedevo se il codice è compatibile per quanto riguarda i timer e registri .. non li ho mai usati e mi piacerebbe sfruttarli .
fracampof
Messaggi: 132
Iscritto il: sab 28 mar 2020, 17:31

Re: Aiuto per Smart Power module, costruzione piccolo inverter

Messaggio da fracampof »

ho trovato questo codice che devo ancora testare applicabile al pic 4550 magari a qualcuno puo servire

#define PWM_MIN_DUTY 200
#define PWM_START_DUTY 400

#include <18F4550.h>
#device ADC = 10
#fuses NOMCLR HSPLL PLL2 CPUDIV1
#use delay(clock = 48MHz)
// Use fast I/O pins
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)

void AH_BL();
void AH_CL();
void BH_CL();
void BH_AL();
void CH_AL();
void CH_BL();
void BEMF_A_RISING();
void BEMF_A_FALLING();
void BEMF_B_RISING();
void BEMF_B_FALLING();
void BEMF_C_RISING();
void BEMF_C_FALLING();
void bldc_move();
void SET_PWM_DUTY();

int8 bldc_step = 0;
int16 motor_speed;

#INT_EXT // External interrupt 0 ISR
void INT_EXT_ISR(void){
// BEMF debounce
for(int8 j = 0; j < 20; j++) {
if(bldc_step & 1) {
if(input(PIN_B0)) j -= 1;
}
else {
if(!input(PIN_B0)) j -= 1;
}
}
bldc_move();
SET_PWM_DUTY();
}
#INT_EXT1 // External interrupt 1 ISR
void INT_EXT1_ISR(void){
// BEMF debounce
for(int8 j = 0; j < 20; j++) {
if(bldc_step & 1) {
if(input(PIN_B1)) j -= 1;
}
else {
if(!input(PIN_B1)) j -= 1;
}
}
bldc_move();
}
#INT_EXT2 // External interrupt 2 ISR
void INT_EXT2_ISR(void){
// BEMF debounce
for(int8 j = 0; j < 20; j++) {
if(bldc_step & 1) {
if(input(PIN_B2)) j -= 1;
}
else {
if(!input(PIN_B2)) j -= 1;
}
}
bldc_move();
}

void bldc_move(){ // BLDC motor commutation function
switch(bldc_step){
case 0:
AH_BL();
BEMF_C_FALLING(); // Sense BEMF C
break;
case 1:
AH_CL();
BEMF_B_RISING(); // Sense BEMF B
break;
case 2:
BH_CL();
BEMF_A_FALLING(); // Sense BEMF A
break;
case 3:
BH_AL();
BEMF_C_RISING(); // Sense BEMF C
break;
case 4:
CH_AL();
BEMF_B_FALLING(); // Sense BEMF B
break;
case 5:
CH_BL();
BEMF_A_RISING(); // Sense BEMF A
break;
}
bldc_step++;
if(bldc_step >= 6)
bldc_step = 0;
}

void main(){
output_low(PIN_C1);
output_drive(PIN_C1); // Configure RC1 pin as output
output_d(0); // PORTD initial state
set_tris_d(0); // Configure all PORTD pins as outputs
setup_timer_2(T2_DIV_BY_1, 255, 1); // Set PWM frequency to 19.53KHz and 10-bit resolution
setup_adc_ports(AN0); // Configure AN0 pin as analog
setup_adc(ADC_CLOCK_INTERNAL); // Set ADC module clock source to internal
set_adc_channel(0); // Select channel 0 (AN0)
clear_interrupt(INT_EXT); // Clear INT0 flag bit
clear_interrupt(INT_EXT1); // Clear INT1 flag bit
clear_interrupt(INT_EXT2); // Clear INT2 flag bit

// Motor start
output_d(0x08); // Set pin RD3
set_pwm1_duty(PWM_START_DUTY); // Set PWM1 duty cycle
set_pwm2_duty(PWM_START_DUTY); // Set PWM2 duty cycle
int16 i = 5000;
while(i > 100) {
delay_us(i);
bldc_move();
i = i - 20;
}
READ_ADC(ADC_START_ONLY); // Start analog conversion
enable_interrupts(GLOBAL); // Enable global interrupts
while(TRUE)
; // Endless loop
}

void BEMF_A_RISING() {
disable_interrupts(INT_EXT1);
enable_interrupts(INT_EXT_L2H);
}
void BEMF_A_FALLING() {
disable_interrupts(INT_EXT1);
enable_interrupts(INT_EXT_H2L);

}
void BEMF_B_RISING() {
disable_interrupts(INT_EXT2);
enable_interrupts(INT_EXT1_L2H);
}
void BEMF_B_FALLING() {
disable_interrupts(INT_EXT2);
enable_interrupts(INT_EXT1_H2L);

}
void BEMF_C_RISING() {
disable_interrupts(INT_EXT);
enable_interrupts(INT_EXT2_L2H);
}
void BEMF_C_FALLING() {
disable_interrupts(INT_EXT);
enable_interrupts(INT_EXT2_H2L);
}

void AH_BL() {
setup_ccp2(CCP_OFF); // RC1 PWM OFF
output_low(PIN_C1);
setup_ccp1(CCP_PWM | CCP_PWM_FULL_BRIDGE); // RD7 PWM ON
}
void AH_CL() {
output_d(0x04);
}
void BH_CL() {
setup_ccp1(CCP_OFF); // RD5 & RD7 PWMs OFF
output_d(0x04);
setup_ccp1(CCP_PWM | CCP_PWM_FULL_BRIDGE_REV); // RD5 PWM ON
}
void BH_AL() {
output_d(0x10);
}
void CH_AL() {
setup_ccp1(CCP_OFF); // RD5 & RD7 PWMs OFF
output_d(0x10);
setup_ccp2(CCP_PWM); // RC1 PWM ON
}
void CH_BL() {
output_d(0x08);
}
void SET_PWM_DUTY() {
if(adc_done()){ // If conversion complete
motor_speed = read_adc(ADC_READ_ONLY); // Read conversion result
if(motor_speed < PWM_MIN_DUTY)
motor_speed = PWM_MIN_DUTY;
set_pwm1_duty(motor_speed); // Set PWM1 duty cycle
set_pwm2_duty(motor_speed); // Set PWM2 duty cycle
READ_ADC(ADC_START_ONLY); // Start analog conversion
}
}
fracampof
Messaggi: 132
Iscritto il: sab 28 mar 2020, 17:31

Re: Aiuto per Smart Power module, costruzione piccolo inverter

Messaggio da fracampof »

schema
schema
pic18f4550-sensorless-bldc-motor-controller-bemf-circuit.png (115.62 KiB) Visto 4081 volte
allego lo schema di collegamento
Avatar utente
Pier Aisa
Amministratore
Messaggi: 2540
Iscritto il: ven 16 mar 2018, 9:43
Località: Bologna
Contatta:

Re: Aiuto per Smart Power module, costruzione piccolo inverter

Messaggio da Pier Aisa »

Ottimo !
Grazie. Direi che hai stabilito un nuovo record !
Codice in un post ...... molto nerd e molto efficace ... vai di CTRL+C CTRL+V
:lol:
Avatar utente
Maxvarese
Messaggi: 1959
Iscritto il: mar 9 apr 2019, 23:53

Re: Aiuto per Smart Power module, costruzione piccolo inverter

Messaggio da Maxvarese »

Ma non era un motore ac Trifase configurato per la monofase?
Perché ora c'è un brassel Dc?
fracampof
Messaggi: 132
Iscritto il: sab 28 mar 2020, 17:31

Re: Aiuto per Smart Power module, costruzione piccolo inverter

Messaggio da fracampof »

speriamo che il codice funzioni :D non sono molto pratico con i linguaggi di programmazione :roll:
il progetto è per un motore brushless dc ma il funzionamento è molto simile a quello di un classico motore a induzione trifase
dovrebbe funzionare o almeno nella mia testa funziona :roll:
vi aggiornero' quando avro' riportato tutto dalla teoria alla pratica :D
Avatar utente
Pier Aisa
Amministratore
Messaggi: 2540
Iscritto il: ven 16 mar 2018, 9:43
Località: Bologna
Contatta:

Re: Aiuto per Smart Power module, costruzione piccolo inverter

Messaggio da Pier Aisa »

Beh non è proprio la stessa cosa ....
Se ti puo' aiutare qua avevo fatto un ripassone sui motori e il loro principio di funzionamento
https://www.youtube.com/watch?v=y8V4BPnW-kA
fracampof
Messaggi: 132
Iscritto il: sab 28 mar 2020, 17:31

Re: Aiuto per Smart Power module, costruzione piccolo inverter

Messaggio da fracampof »

come funzionamento sono diversi ma come pilotaggio sono simili ... invece di avere tre onde sinusoidali hanno tre onde quadre sempre sfasate di 120 gradi ... gli inverter piu economici lavorano in quadra non in sinosuidale... questo potrebbe causare dei surriscaldamenti degli avvolgimenti del motore ma in tanto nel mio caso resterebbe acceso per poco tempo ... sapessi modificare il codice per renderlo sinusuidale sarebbe manna ma purtroppo sono ignorante :|
Rispondi