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.
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.
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