Autor Tema: alimentacion motor 12V desde 2 pins del micro  (Leído 2785 veces)

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

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 187
alimentacion motor 12V desde 2 pins del micro
« en: 04 de Abril de 2016, 14:29:38 »
Quiero saber cual es el npn adecuado y sus 3 resistencias a modo de potencimetro a intencion de conseguir:

00 nada paro(esto lo se hacer yo solo)
01 resistencia para 35% rendimiento
10 resistencia para 70% rendimiento
11 resistencia para 100% rendimiento

No recuerdo formulas.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #1 en: 04 de Abril de 2016, 15:48:44 »
Hola Berto, no existe lo que deseas, por lo menos de manera tan simple, ya que un BJT no tiene siempre la misma ganancia, por lo tanto será necesario el uso de algún amplificador operacional, y demás componentes para compensar esta diferencia.

Por otro lado, en mucho más sencillo hacerlo con un PWM y transistores mosfet.

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: 7802
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #2 en: 04 de Abril de 2016, 20:29:13 »
Creo que lo busca Berto es esto:

https://en.wikipedia.org/wiki/Resistor_ladder

Un conversor R/2R, pero depende para que lo aplicas, eso es un conversor D/A, pero si necesitas controlar una carga, como dice Chaly mas facil es usar el PWM y un MOSFET

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 187
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #3 en: 05 de Abril de 2016, 13:57:03 »
El amplificador no me vale a menos que este solo este sustituyendo al transistor. Las 3 resistencias son necesarias, ya que un 16f877 no tiene salida DAC

Si utilizo PWM esto deberia hacerlo un timer o algo a si. Todos los programas que e visto asta ahora con PWM ocupan todo el codigo en este. Sin el timer esto es lo primero que se me ocurre:

Código: [Seleccionar]
//Mas o menos a1 y a2 podrian ser variables no pines
//Y pin A3 el que se encarga de la alimentacion al motor

if(Input(PIN_a1) && Input(PIN_a2){  subir=100; }
else {  subir=0;
if(Input(PIN_a1)){  subir+=35 }
if(Input(PIN_a2)){ subir+=70 }
}

contador++;
if(contador>99){ contador=0; }

 if(contador<subir){ output_high(PIN_A3); } //Flanco de subida
else
{ output_low(PIN_A3); } //Flanco de bajada



Es lo que vengo asta ahora no tengo ningun proyecto propio con el Timer.
Luego esta que de utilizar flancos para un motor DC .Segun un libro viejo del 84, no recomienda hacer flancos continuos decia que se pierde tanto energia como W de esta manera

Es mas eficiente un flanco=1 de 1.5 sg + flanco=0 de 0.5 seg
que 10 flancos de 0.15 sg 10 flancos de 0.05 seg

No merece la pena leerlo es como estudiar una calculadora de palancas y engranajes siglo 18 ingenioso-interesante pero espantosa, para comprender una de ahora. Aunque hay cosas que no cambiado como en este caso, al primer metodo tambien le llaman PWM pero no lo es, segun como varies el potencimetro de otos proyectos, que ocupan todo el codigo en este.

2 Saludos.




« Última modificación: 05 de Abril de 2016, 21:46:35 por Chaly29 »

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #4 en: 05 de Abril de 2016, 21:45:44 »
Hola Berto, el PIC16F977 tiene dentro de su arquitectura un módulo PWM, que lo único que debes de hacer  es configurarlo y luego cargar determinado valor al registro correspondiente y listo.

Por ejemplo cargando 0 al tal registro la salida será un 0 contínuo.
Luego cargando un 89 obtendremos un valor muy próximo al 35%
Con un 178 estaremos en el 70%
y con 255 conseguimos un 100%

Estro hablando de solo 8 bit de largo de palabra, ya que si lo deseas es posible usar 10 bit y por consiguiente mucha más resolución o exactitud.

A la salida del PIC, la que genera el PWM le colocas un circuito driver para excitar correctamente un transistor mosfet y listo, ya controlas el motor.

Tampoco nos comentas de que tamaño, tensión, potencia, intensidad será el motor a usar. Son cuestiones importantes.

Con solo unas resistencias y un transistor no lograrías nada, o por lo menos nada que funcione medianamente bien.

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 Berto

  • PIC16
  • ***
  • Mensajes: 187
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #5 en: 06 de Abril de 2016, 17:32:54 »

* Sin título.png
(169.26 kB, 1280x1024 - visto 274 veces)

Esto era. No hay que echarle la bronca a ningun fabricante, es lo que se me ocurrio a mi inicialmente y funciona, al menos un simulador si lo permite, ahora todo esta borrado e quitado componentes esto y led decorativos, alarmas, porque proteus se traba si lo cargas demasiado el motor es el comun de proteus, las propiedades se puden cambiar.
Quiero una version amplia del proyecto, pero como es debido, lo que dices esta bien pero lo que veo se mete en el timer, se habla de registros que no se como llegar a ellos. Hoy e estado refinando todo bastante bien lo hecho, pero me cuesta entender lo nuevo, tampoco me gusta mucho leer, es pesada la teoria, a si.
Lo que me gustaria es un proyecto especifico a este tema, estoy biendo un codigo hecho para X18.


Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 187
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #6 en: 06 de Abril de 2016, 17:37:42 »
No reconozco nada pero si compila, modificarlo sera la mejor forma de entenderlo
http://microcontroladores-mrelberni.com/ccp-pic-modo-pwm/

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7802
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #7 en: 06 de Abril de 2016, 21:53:42 »
Citar
tampoco me gusta mucho leer, es pesada la teoria

Citar
No reconozco nada pero si compila, modificarlo sera la mejor forma de entenderlo

Te lo dije en otro post, tu problema es que no lees el datasheet del micro, es un documento que cada modulo tendra 4 o 5 paginas. Especialmente del timer. Y solo tenes que entenderle a los graficos y lso registros que se usan.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #8 en: 07 de Abril de 2016, 01:33:15 »
Hola Berto, pues si tu mismo no quieres ayudarte, menos yo tendré ganas de hacerlo.

Suerte con el proyecto.

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 Berto

  • PIC16
  • ***
  • Mensajes: 187
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #9 en: 09 de Abril de 2016, 16:37:21 »
No es suerte, si no funciona no por es mala suerte y aunque aveces el simulador me a mostrado de manera clara, que no esta respondiendo el bien, por lo general es por no entender el todo del conjunto softwar+hardwar que estoy manejando

Desconectado nico

  • PIC16
  • ***
  • Mensajes: 180
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #10 en: 09 de Abril de 2016, 19:59:04 »
Berto, ya sabemos que si no funciona no es por suerte, chaly29 te respondio subjetivamente, ya que mas arriba pusiste que no valia la pena leerlo y killer ya te recomendo que leas el datasheet. Entonces si das respuestas asi, pues no te van a ayudar.
 Te dieron respuestas objetivas, buscando una solucion al problema que planteaste desde otro angulo, pero si no quieres leer el problema es tuyo. Hacer andar el pwm del micro es un rato, te lo aseguro, seguramente mucho menor al que estas utilizando en entender porque anda o no algo que crees que tiene que andar.
Habitualmente, leyendo entendemos mucho mejor que haciendo las cosas al azar.

"Suerte" con tu proyecto :?, de onda.

Salutes.
Nico.


Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 187
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #11 en: 11 de Abril de 2016, 18:14:42 »
Si eso es lo que hice leer, pero respecto a los timer los registros del timer no entiendo de que hablaban, solo me equedado que el 7 corresponde a enable_disable(timer x). Tampoco consigo control sobre esto  "get_timer0()" Se supone que es para leer el timer, pero en main() se limita a darme 6-7 y dentro de el, de lo unico que me valdria a mi es para generar numeros aleatorios.
Lo que consegido por primera vez con el timer0 es basico. Esto difiere del proyecto pero es lo que hago para utilizarlo como contador y en lo que se refiere a una salida PWH es proporcional

Código: [Seleccionar]
int8 arder=50,enfriar=0;
int16 vuelta=0,segundo=0,F1;
int16 opera0=0;
#int_TIMER0
void  TIMER0_isr(void)

opera0++;//contador de entradas al timer0
vuelta++;//con RTCC_DIV_8 parece hacer 600 entradas x segundo
if(vuelta>599){
segundo++; vuelta=0;//...cada segundo 
//if(arder>=1){ arder--; }//el mecanismo se enfria lentamente por si solo cada 1 sg
}

enfriar++;
if(enfriar>199){
enfriar=0;
//se cambia el flanco PWH de subida... cada 0.33 sg
if(arder>99){ F1=300; } else { F1=(int16)arder*3; }
}

//RESULTADO FINAL se supone que a mayor .int8 arder 0-100. mayor pulso de subida a un motor-refrigerador
 if(contador<300){ contador++; } else { contador=0; }
      if(F1>contador){  output_high(PIN_A3); }//Flanco alto
      else{ output_low(PIN_A3); }//Flanco vajo
}

Solo una pregunta: Si realmente el timer trabaja en paralelo al resto del codigo sin interrumpirle. No deberia importar el nº de veces que se ejecuta por segundo, pero si yo el minimo necesito centesimas 0.01 sg. ¿que puedo hacerle a este para que solo opere 100 veces, en vez de 600 por segundo?, el codigo me liaria menos a la larga, y podria llegar a sustituir int16s x int8s

Saludos.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7802
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #12 en: 11 de Abril de 2016, 19:58:13 »
Citar
Solo una pregunta: Si realmente el timer trabaja en paralelo al resto del codigo sin interrumpirle. No deberia importar el nº de veces que se ejecuta por segundo, pero si yo el minimo necesito centesimas 0.01 sg. ¿que puedo hacerle a este para que solo opere 100 veces, en vez de 600 por segundo?, el codigo me liaria menos a la larga, y podria llegar a sustituir int16s x int8s

Esas 2 cosas en negrita me dicen:

- No sabes lo que es una interrupcion o como funciona en NINGUN microcontrolador.
- No sabes como funciona el timer.

Y el PWM es otro modulo, a no ser que sea demasiado lento y lo debas hacer con un timer.
Nuevamente esta todo explicado en el datasheet.

Citar
Si eso es lo que hice leer, pero respecto a los timer los registros del timer no entiendo de que hablaban, solo me equedado que el 7 corresponde a enable_disable(timer x). Tampoco consigo control sobre esto  "get_timer0()" Se supone que es para leer el timer, pero en main() se limita a darme 6-7 y dentro de el, de lo unico que me valdria a mi es para generar numeros aleatorios.

No se que datasheet tenes pero el timer 0 involucra 2 registros en su control + 1 que es el contenido del timer,

- el registro de control del timer lo modificas con setup_timer_0(), El otro registro es el de interrupcion que activas o no la interrupcion enable_interrupt()
- el registro con el valor del timer lo seteas con set_timer0() y obtenes el valor con get_timer0()

Fin... terminaste tu Timer, tambien el timer 1 y 2 son "parecidos".
De tu interrupcion imagino que no tenes idea de como configurar el tiempo de la interrupcion sino que esta libremente. Muchas veces no da el tiempo con 8bits, asi que tenes que usar uno de 16 bits.
« Última modificación: 11 de Abril de 2016, 20:38:07 por KILLERJC »

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 187
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #13 en: 12 de Abril de 2016, 08:17:52 »
Cierto el codigo funciono casualmente a base de hacer comparaciones, no estoy utilizando el contador interno que se supone que tienen. El registro que dije  se refiere a los flag de la serie 16f8xx, solo veo que e accedido a algunos de ellos mediante codigo, entre ellos solo el timer0.

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 187
Re:alimentacion motor 12V desde 2 pins del micro
« Respuesta #14 en: 19 de Abril de 2016, 12:26:32 »
Yasta mejor utilizar timer1 para medir centesimas, basandome en la formula grafica, reducida solo para 4Mz queriendo un periodo de 500.
500=prescaler 2 * ( 256 - X )
X = 256 - (500/2)
 Yo necesito esto

REFERENCIA
1centesima = 10.000micro-segundos

X Tanto con "Prescaler 8"

10.000= 8 * (65536 - X )

X =65536 - (10.000/8) = 64286///Al timer0 no puedo restarle mas de 255
X coincide las centenas mostradas en LCD son segundos (+)90% el simulador se me retrasa mas en proyecto amplio

"P1" X=65536 - 10.000 = 55536 //Incluso sobraria con prescaler 1