Conecto un multimetro a la salida 11 de un ATmega328, y pasa de 0 voltios si el parametro de analogWrite es de 125 para abajo y 5 voltios si esta de 125 para arriba... NO consigo voltajes intermedios...
ej:
analogWrite (11, 120); //EL voltaje es 0v
analogWrite (11, 80); //EL voltaje es 0v
analogWrite (11, 150); //EL voltaje es 5v
analogWrite (11,200); //EL voltaje es 5v
Aun a riesgo de salirme de mi territorio e internarme en el desconocido de la electrónica, aunque el comando se llame analogwrite, la salida que da es de 5v en impulsos de mayor o menor anchura dentro del ciclo. Así que es correcto que detectes 0 o 5v. Podríamos decir que lo que se regula es la intensidad media por ciclo. Seguramente que haya algún circuito que pueda convertir en voltaje esos impulsos, pero ahí tendrá que asesorarteb siguen que sepa .
HOmbre, el vistazo la se lo he echado... Puedes ser mas concreto?
Si lo dices por que no he declarado el pin como salida en otros textos de referencia dice que no es necesario, y de hecho lo he probado de ambas formas con identico resultado...
En un arduino mega que tengo funciona perfectamente...
noter:
Aun a riesgo de salirme de mi territorio e internarme en el desconocido de la electrónica, aunque el comando se llame analogwrite, la salida que da es de 5v en impulsos de mayor o menor anchura dentro del ciclo. Así que es correcto que detectes 0 o 5v. Podríamos decir que lo que se regula es la intensidad media por ciclo. Seguramente que haya algún circuito que pueda convertir en voltaje esos impulsos, pero ahí tendrá que asesorarteb siguen que sepa .
El segundo parametro define el ancho de pulso, con lo que se consigue el voltaje determinado...
Yo tampoco entiendo mucho, pero creo que el muestreo del multimetro coje el voltaje justo en el momento en el que está en 0 o 5, no promedia voltajes. En valores bajos hay mas probabilidad de detectar 0s y en altos de detectar 5s
Perfectamente expresado. Lo que no entiendo es porqué en el mega sí te da valores intermedios. Tal vez sea porque la frecuencia pwm sea más alta y "engañe" al multímetro, pero en ambos casos creo que la salida es una onda cuadrada con 0 o 5 voltios. Si hallaramos la media de voltaje por ciclo saldría ese voltaje pseudo analógico equivalente.
Igual con algún condensador se podía convertir en continua esa onda cuadrada, pero esas son cosas que ya se me escapan. No tengo ni papa de electrónica
Comprueba que el pin 11 tiene en la placa un símbolo de onda, esto indica que es PWM donde puedes ejecutar correctamente el comando analogWrite.
Comprueba lo siguiente,
analogWrite(11,127);
delay(1000);
analogWrite(11,128);
delay(1000);
si se enciende y se apaga significa que está actuando como un pin digital. Me explico, el comando analog write varia desde 0 hasta 255. si haces 255/2 te da 127.5. por ello en 127 (al ser pin digital) lo interpreta como un LOW y luego en 128 lo interpreta como un HIGH. En resumen, pienso que es por ello que el tester te marca o cero voltios o cinco voltios. sin estados intermedios.
Mi propuesta sería que hicieras tu conexión con otro pin (asegúrate de que este nuevo pin lleve asociado en la placa arduino el símbolo de onda que te comento) y vieras si te funciona o no. Dicho lo cual, comprobaría en todos los pines PWM que funciona adecuadamente el comando analogWrite.