Autor Tema: aqui esta pasando algo muy raro, el pic deberia poder mover ese motor  (Leído 1440 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
ola a todos. es ke tengo un problema que no e podido solusionar. estoy intentando usar un microcontrolador PIC16F88 para mover un motor dc de los pequeños, la velocidad del motor se debe regular con el potenciometro usando el ADC del pic. el problema es ke el motor no se mueve ni ase nada...

yo se ke cada pin del píc puede dar hasta 40 miliamperios, pero el motor funsiona con 200 miliamperios entonses lo ke ise fue conectar todo el puerto B al motor para darle toda la corriente o sea 40*7 = 280 miliamperios o sea el motor es ta bien de corriente pero no entiendo porke no se mueve es muy raro si alguien me pudiera ayudar se lo agradeseria mucho

este es el circuito ke tengo armado, el potenciometro es el de arriba y el motor el de abajo



este es el codigo ke escribi:

Código: [Seleccionar]
#include <16F88.h>
#device *=8    //para ke el adc llege asta 255 ndama mas

#FUSES nomclr    //sin reset            
#FUSES intrc      //esto usa el cirstal interno del pic                

#use delay(clock=8M)  //cristal a 8 megabits de velocidad

#byte portb=6   //declaro la ubicasion del puerto b donde voy a conectar el motor
#byte porta=5   //la ubicasion del puerto a donde voy a leer el potensiometro



void main()
{

inicio:


char lectura;


setup_adc(ADC_CLOCK_INTERNAL);   //configuramos el adc con el cristal interno

delay_ms(1);   //espero un segundo para ke se estabilise

setup_adc_ports(sAN0);

delay_ms(1);   //espera un segundo para ke se estabilise

lectura=read_adc();   //leo el valor del voltaje del potensiometro

portb = lectura;   //cargo en el puerto donde esta el motor  el valor de voltaje


goto inicio;  //vuelvo a ejecutar el programa de forma infinita

}

les agradesco su ayuda
« Última modificación: 26 de Abril de 2015, 23:55:04 por RodrigoAndres »

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: aqui esta pasando algo muy raro, el pic deberia poder mover ese motor
« Respuesta #1 en: 27 de Abril de 2015, 00:05:42 »
Hola RodrigoAndres, pues los pines individualmente solo entregan hasta 25mA y no 40mA como tu mencionas, aparte el port entero (que son 8 pines y no 7) tiene una sumatoria máxima de corriente de 100mA, o sea que el port entero solo puede entregar hasta 100mA

Más allá de lo anterior, el motor consume nominalmente 280mA, pero al momento de su arranque esa corriente es varias veces mayor, son solo unos pocos mili segundos, pero lo suficiente.

Usa un transistor para conmutar el motor, será más facil.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: aqui esta pasando algo muy raro, el pic deberia poder mover ese motor
« Respuesta #2 en: 27 de Abril de 2015, 00:12:10 »
yo se ke cada pin del píc puede dar hasta 40 miliamperios, pero el motor funsiona con 200 miliamperios entonses lo ke ise fue conectar todo el puerto B al motor para darle toda la corriente o sea 40*7 = 280 miliamperios o sea el motor es ta bien de corriente pero no entiendo porke no se mueve es muy raro si alguien me pudiera ayudar se lo agradeseria mucho

Demasiados erroreS en todo eSo.  :rolleyes:
Del datasheet:

Maximum output current sunk/sourced by any I/O pin.......................................... 25 mA
Maximum current sunk/soruced by PORTB...........................................................100 mA

Y esos son los valores MAXIMOS en el cual uno deberia intentar evitar llegar. Tambien denotar que no es 25 * 8 , sino que esta limitado por la potencia que puede manejar el puerto por eso llega a 100mA
Conectar todo el PORTB lo unico que puede llegar a pasar es que si hace la conmutacion primero el PORTB,1 antes que lo demas este se encuentre sobrecargado.

Pasando al software tu programa esta mal en varios sentidos.

Código: [Seleccionar]
lectura=read_adc();   //leo el valor del voltaje del potensiometro

portb = lectura;   //cargo en el puerto donde esta el motor  el valor de voltaje

Lo que obtenes de read_adc() es un valor de 0 a 256 o que es lo mismo en binario de 0000 0000 a 1111 1111
Si luego esto lo copias al portb, quiere decir que solo algunas salidas se van a poner a 1 ( es decir van a tener 5V ) no significa que al poner 1000 0000 salga 2.5V y por ende vaya mas lento el motor.


Asi que las recomendaciones a seguir serian:

Hardware:
Bajo ningun motivo poner la entrada del potenciometro como salida, ya que le podrias estar mandando 5V segun la posicion del potenciometro haciendo un corto si la salida se encuentra a 0 ya que no existiria resistencia en el camino.
.
Utilizar algun transistor para comandar el motor, si tenes un ULN2003 por ahi tirado de algun otro proyecto te podria servir.

Software:
Para variar la velocidad del motor, debes variar la tension , para esto podrias utilizar el PWM que tiene el micro, entonces para variar la tension que le llega al motor lo que haces es conmutar entre encendido y apagado, definiendo el tiempo que esta encendido y el tiempo que esta apagado. normalmente en el PWM la frecuencia es fija : (toff + ton = Tpwm = 1/Fpwm), lo que se varia es el duty.
la relacion de encendido/apagado (ton/(ton+toff) = duty cycle ) determinara la tension en tu motor.

PD: Chaly me gano escribiendo
« Última modificación: 27 de Abril de 2015, 00:15:24 por KILLERJC »

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Re: aqui esta pasando algo muy raro, el pic deberia poder mover ese motor
« Respuesta #3 en: 27 de Abril de 2015, 00:36:35 »
bueno, creo ke ya entiendo porke lo ke diseñe no funciona. pero eso del pwm no lo entiendo para nada, tendre ke buscar un tutorial por internet mañana en la mañana, temprano.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: aqui esta pasando algo muy raro, el pic deberia poder mover ese motor
« Respuesta #4 en: 27 de Abril de 2015, 02:52:31 »
Un esquema para que veas lo que te comentan los compañeros.


ahora tu adapta las tensiones y resistencias



cambia los 10 voltios por 5 y la resistencia de 1K por lo menos a 1K5 o 3K3, ademas yo le añadiría una resistencia entre la base y el emisor de unos 10K por ejemplo.

el transistor por ejemplo el que te dice el compañero killer.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw


 

anything