Estoy tratando de controlar la velocidad del motor usando el valor ADC recibido usando ATMega16, el sistema funciona bien con 12V. Pero cuando voy a 24 V, el motor funciona continuamente, incluso cuando el valor de ADC es 0.
He comprobado con el osciloscopio, la salida de PWM repentinamente va a ALTA y permanece ALTA incluso cuando la entrada ADC es 0.
Creoqueelcódigoescorrectoyaqueelsistemafuncionaperfectamenteencasode12V.
#include<avr\io.h>#include<avr\interrupt.h>#defineF_CPU1000000UL#include<util/delay.h>intdel;intx,x1,z,z1;intrpm=0;intmain(void){DDRA=0X00;DDRD=0xFF;DDRC=0xFF;DDRB=0xFF;ADCSRA=0x87;ADMUX=0xC0;//SelectingADC0while(1){ADCSRA|=(1<<ADSC);while((ADCSRA&(1<<ADIF))==0);{x=ADCL;PORTD=x;x1=ADCH;PORTC=x1;del=ADCL;del|=ADCH<<8;del=(del-512)/50;if(del>0){PORTB=0x08;_delay_ms(del);PORTB=0x00;_delay_ms(10-del);}else{PORTB=0x00;}}
HojadedatosdelMOSFET: