He diseñado un circuito microcontrolador para accionar un motor de corriente continua utilizando señales de un chip ATmega234P a través de un puente H L239DNE. El problema que tengo es que el motor funciona más lento de lo normal mientras se ejecuta el código PWM. En cuanto conecto un programador MKII al ISP el motor funciona correctamente. Adjunto el esquema de mi circuito y el código que estoy ejecutando. Cualquier ayuda será muy apreciada.
Código ( fuente ):
/*
* DCM_PWM.c
*
* Created: 14/09/2018 6:31:42 PM
* Author : s4354441
*/
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
void setup_timer0 (void)
{
DDRB = (1<<DDB3) | (1<<DDB4); // set the PWM pin to output.
TCCR0A = (1<<COM0A1) | (1<<COM0A0) | (1<<COM0B1) | (1<<COM0B0) | (0<WGM01) | (1<<WGM00); // toggle OC0A on compare match
TCCR0B = (0<<WGM02) | (0<<CS02)| (0<<CS01) | (1<<CS00); //select PWM, Phase Correct
OCR0A = 0; // set output compare value
OCR0B = 0; // set output compare value
}
void PWM_func (void)
{
for (int i=0; i<255; i++) {
OCR0A = i;
_delay_ms(25);
}
for (int i=255; i>0; i--) {
OCR0A = i;
_delay_ms(10);
}
for (int i=0; i<255; i++) {
OCR0B = i;
_delay_ms(5);
}
for (int i=255; i>0; i--) {
OCR0B = i;
_delay_ms(25);
}
for (int i=0; i<255; i++) {
OCR0A = i;
_delay_ms(10);
}
}
int main (void)
{
setup_timer0();
PWM_func();
}
0 votos
En el esquema de tu CPU, me parece que hay que intercambiar las posiciones de L1 y C2. No estoy seguro de qué partes del chip están deshabilitadas cuando AVCC está conectado a tierra - esto puede o no tener relación con su problema.
0 votos
@DaveTweed: Dudo que eso cambie lo que ocurre cuando se enchufa el programador. Está mal, eso sí, y debería seguir arreglándose.
0 votos
@rsdanam: Los motores hacen cosas increíblemente feas a los carriles de alimentación. Si el motor y el microprocesador se alimentan de la misma fuente, entonces es una sorpresa que funcione incluso con el programador. Si está ejecutando el micro de un suministro que se deriva de la alimentación del motor, entonces dénos los esquemas de cómo está haciendo eso - la energía suficientemente sucia a un regulador saldrá sucia en el otro extremo.
1 votos
@rsdanam: ¿Tienes un osciloscopio con el que puedas mirar la banda de alimentación del microprocesador, y el PWM que va al motor? Hay un montón de posibles problemas aquí que podrían ser eliminados por hurgar con incluso un osciloscopio barato.
0 votos
@TimWescott: La alimentación de 5V se deriva de la de 12V, como se muestra en el segundo esquema. Es cierto que enchufar el programador podría estar ayudando a estabilizar el carril de alimentación de 5V.