Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

28/01/2013 #21


Un detalle crees que este usando por las huevas los 3 16f628a y mejor le ponemos una eeprom mas...
Espero tu pronta respuesta
28/01/2013 #22

Avatar de Justiciero24

bregy dijo: Ver Mensaje
Un detalle crees que este usando por las huevas los 3 16f628aEspero tu pronta respuesta

¿Como? No entendi lo que me preguntas y lo de la eeprom aparte no vale la pena usa la interna que tiene el PIC
28/01/2013 #23


Osea creo que usar 4 microcontroladores es un exeso y solo usamos el 16f877a
28/01/2013 #24

Avatar de Justiciero24

Ahhhh... en eso tienes razon ya que el 16f877a es mas que capaz de soportar a Tengu, te lo iba a sugerir desde un principio pero como dijiste que era para aprender ya no lo hize.
28/01/2013 #25


Si para aprender usare otra cosa, ya no lo hare asi pero entonces me topo con un problema grande no se como generar señales pwm con software no se!
28/01/2013 #26

Avatar de Justiciero24

Ok, por suerte yo si se, para generar PWM por software se nesesitan 2 timers el primero dfine la frecuencia de trabajo y el segundo el ancho del pulso, para esto se entra a interrupcion por timer 1 (el que define la frecuencia de trabajo) se detiene el timer uno, cargas el timer 2 ( el que define el ancho de pulso)con el ancho del pulso deseado y lo inicias a la vez que pones en alto la salida y esperas a que se agote y pones en bajo la salida despue reinicias el timer 1 y vuelve a comenzar de nuevo. Basicamente es eso, el pic 16f887a tiene dos PWM por hard ¿cuantos mas nesesitas por soft?
28/01/2013 #27


Pero no te entiendo eso de los timer nunca los utilice con que comando los cargo,
Necesitamos 3 PWM
28/01/2013 #28

Avatar de Justiciero24

Osea que solo te hace falta un pwm???? Si es asi es mas facil todavia ya que solo se ocupa un timer... estos son un poco mas liosos de usar te voy a hacer un ejemplo para que veas como se hace.

PD: para saber de que estamos hablando, podrias compartir lo que llevas???
28/01/2013 #29


Ok gracias amigo...

---------- Actualizado después de 2 minutos ----------

Lo que llevo son solo dibujos y bosquejos por que aun no tengo dinero xD en cuanto pueda te enseño todo eso...

---------- Actualizado después de 2 minutos ----------

Que opinas de esto?

Código:
'***********************************************************
'Pruebas para inciarse en el control de iluminación led por PWM
'Tres PWM por software
'***********************************************************
'Configuración de fuses y reloj
Define CONF_WORD = 0x2f50
Define CLOCK_FREQUENCY = 4

'Configuración de módulos
AllDigital  'Los pin analogicos/digitales trabajaran como digitales
TRISA = 0  'Puerto A configurado como salidas, execto RA5 que solo trabaja como entrada
TRISB = 0  'Puero B configurado como salidas
PORTB = 0  'Puerto B puesto a cero todos sus pin
'Rutina principal
main:
	Dim cont As Word 'Contador incremento potencia de los PWMs
	Dim pwm0 As Byte 'Potencia PWM 0
	Dim pwm1 As Byte 'Potencia PWM 1
	Dim pwm2 As Byte 'Potencia PWM 2
	Const cont_s = 5 'Intervalo incremento Potencias
	Dim x As Bit 'Variable auxiliar
	pwm0 = 0 'Potencia inicial 0% PWM0
	pwm1 = 255 'Potencia inicial 100€ PWM1
	pwm2 = 127 'Potencia inicial 50% PWM2
	x = 0
 
	While x = 0  'Bucle principal
	
		Call _pwm_rb(pwm0, pwm1, pwm2) 'Controla y actualiza los PWMs
		If cont >= cont_s Then 'Intervalo del incremento de potencias
			pwm0 = pwm0 + 1
			pwm1 = pwm1 - 1
			cont = 0
		Endif
		cont = cont + 1
 
	Wend
 
End                                               
'Funcion para practicas con control de potencia con 3 PWM (software)
'Para control con positivo comun
'Pin utilizado RB0 a RB2 del puerto B
'Frecuencia aproximada 230Hz a 8Mhz de CLK.
'Tres valores de entrada mediante _pwm0 a _pwm2
'Con valores comprendidos entre 0 a 255 pasos de potencia
Proc _pwm_rb(_pwm0 As Byte, _pwm1 As Byte, _pwm2 As Byte)
	Const periodo = 255  'Periodo de la señal
	Dim ctrl As Byte  'Lleva el tiempo transcurrido del periodo
	If _pwm0 > 0 Then RB0 = 0  'Pin a OFF
	If _pwm1 > 0 Then RB1 = 0  'Pin a OFF
	If _pwm2 > 0 Then RB2 = 0  'Pin a OFF
	ctrl = 0  'Comienza ciclo
	While ctrl < periodo  'Mientras no se complete el periodo
		If ctrl >= _pwm0 Then RB0 = 1  'Pin a ON
		If ctrl >= _pwm1 Then RB1 = 1  'Pin a ON
		If ctrl >= _pwm2 Then RB2 = 1  'Pin a ON
		ctrl = ctrl + 1  'Tiempo transcurrido del periodo
	Wend
End Proc
28/01/2013 #30

Avatar de Justiciero24

OK, tipico la plata siempre limita trabajos yo ando igual con mi CNC jajaja
Aun no te termino el ejmplo yo creo que mañana ya lo tendre ,mientras tanto vere tu codigo...
28/01/2013 #31


Ok, mañana subo todas las imagenes de los avances para que las chequees...
29/01/2013 #32


Ahy te las dejo, no me jusgues!! xD







Espero tu pronta respuesta
30/01/2013 #33

Avatar de Justiciero24

Lamento haberme tardado amigo, pero me llego un trabajo urgente... te adjunto lo que te habia prometido.
Aun no checo el codigo que pusiste, apenas lo voy a ver y te comento.

Saludos,

PD: no puedo ver las imagenes
Archivos Adjuntos
Tipo de Archivo: rar Ejemplo PWM con timer 1.rar (919 Bytes, 5 visitas)
31/01/2013 #34


No te preocupes en cuanto al ejemplo n oconosco la funcion timer dejame investigar un poco, en cuanto a las imagenes las resubo
31/01/2013 #35

Avatar de Justiciero24

Ok, seguimos en contacto... cualquier cosa que se te atore me la haces saber.
31/01/2013 #36


Ahí estan en un rar para que no se borren:

Amigo ya subí las imágenes.


Archivos Adjuntos
Tipo de Archivo: rar Images.rar (1,38 MB (Megabytes), 4 visitas)
31/01/2013 #37

Avatar de Justiciero24

Wow, ya vi los dibujos y la verdad te felicito ya que es un proyecto muy completo a lo que pude ver.
Vi que planeas que tenga un modo reloj, usaras un RTC???
31/01/2013 #38


Si tendrá modo de reloj, pero hoy estuve pensando y me di cuenta que la matriz de 7 x 10 no alcanza para los 4 dígitos que tiene que tener estoy viendo como hacer...

---------- Actualizado después de 2 minutos ----------

PSDT: Gracias por el ejemplo esta muy interesante pero por que pin y puerto arroja la señal PWM?
31/01/2013 #39

Avatar de Justiciero24

el pin no me acuerdo pero el puerto es el B0, con lo del reloj puedes hacer que los numeros se dezplacen a traves de la matriz ;-)
01/02/2013 #40


Este codigo esta bien?...
Código:
'===============================================================
'Codigo de ADC aplicado al pic 16f877a
'No tengo placa entrenadora solo mi proteus y mi protoboard
'No es codigo robado de nadie xD, por fin!
'===============================================================

'Defino parametros del microcontrolador
Define CONF_WORD = 0x3f71
Define CLOCK_FREQUENCY = 4

'Configuro puertos
TRISA = 0
TRISB = 0
TRISC = 0
TRISD = 0
ADCON1 = 0x0e

'Declaro una variable an0
Dim an0 As Word

'Programa:
'Analisa el valor del ADC
'Si cumple la condicion enciende un led
loop:
	Adcin 0, an0
	If an0 > 50 Then
	RB0 = 1
	Else
	RB0 = 0
	Endif
	If an0 > 100 Then
	RB1 = 1
	Else
	RB1 = 0
	Endif
	If an0 > 150 Then
	RB2 = 1
	Else
	RB2 = 0
	Endif
	If an0 > 200 Then
	RB3 = 1
	Else
	RB3 = 0
	Endif
Goto loop
End
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.