1 votos

El motor DC sólo funciona con el programador

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();
}

Esquema de PCB 1 :

enter image description here

Esquema de PCB 2 :

enter image description here

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.

2voto

ozmank Puntos 127

No funcionaría en absoluto con el esquema que se muestra,. Así que L1C2 debe ser invertido en el esquema.

Pero los servomotores demandan una fuerte corriente sólo durante los cambios de comando de posición, (que en este caso puede ser >> 100mA ) por lo que el regulador L05 de baja potencia está posiblemente sufriendo una sobrecarga mientras el voltaje cae para limitar la corriente.

Asegúrate de comprobar la tensión y de que éste no sea el problema. Los valores de LC no son ideales como punto de ruptura del filtro de paso bajo y es esencial un mayor filtrado y cuidado con la tierra analógica para no compartir la corriente del motor.

En resumen, no es un juego de palabras, sin revisar tu código, parece que tienes problemas de alimentación y no informas de las especificaciones de la corriente de sobretensión del servo.

Prueba una fuente de alimentación para PC hasta que aprendas a especificar y elegir una fuente mejor.

0 votos

La pregunta no se refiere a un servomotor comandado por posición, sino a un motor de corriente continua accionado por un notorio puente Darlington.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X