Buenas como se encuentran ando con un problema, bueno en realidad es que no comprendo bien que hacer ahora, dejemen explicar la situacion.
Primero ando realizando un proyecto que mida peso, después envié este valor de peso medido por medio de RS232 a la PC observándolo por el hyperteminal, después dependiendo de 4 pesos distintos se mueva a 4 posiciones distintas un motor paso a paso 0 grados, 90 grados, 180 grados y 270 grados. Ya realice el pesado haciendo uso de una celda de carga de 1kg (alimentada a 5V), la amplificacion la realice usando un INA128, a su vez la conversión ya logre realizarla, aqui es donde me encuentro confundido ya logre enviar este valor al PC por rs232 (use el max232 para esto) sin embargo tengo algunos problemas, los explicare en orden.
1- El valor de ADC no lo e transformado a gramos que es lo que deseo que vea en la PC, e recolectado varios valores y realice una tabla...
Peso (g) | Voltaje (V)
100 | 0.49
200 | 1.11
300 | 1.64
400 | 1.93
500 | 2.51
600 | 2.94
700 | 3.57
800 | 4.26
900 |4.54
1000 | 4.93
estos son los datos que obtuve (el peso muerto ya fue eliminado), ahora con estos datos, alguna idea de como hacer para que este valor de voltaje ya convertido por el ADC se vea en gramos en la PC?
2- Ahora teniendo los valores, mediré 4 pesos para realizar las cuatro posiciones del motor paso a paso, los cuales serán 100 g, 150g, 200 g, 250g, estos valores son aproximados, la exactitud no es muy necesaria. Ahora bien el problema es que al realizar la conversión la señal del valor analógico fluctúa lo cual hace que el valor de la conversión cambie un poco hacia arriba y otro poco hacia abajo, así que me pregunto alguna forma para que deje de cambiar no me sirve que cambie el valor, sera que me hace falta mejorarar la etapa de amplificación, o estas fluctuaciones son normales, las fluctuaciones son de alrededor de 20mV, pensé en tal vez modificar la resolución del ADC para que vea cambios mayores a este valor así solucionar esto, no se si es posible ya saben usando Vref+ y Vref-?
3- digamos que ya tengo todo listo, ahora la cuestión, es como se que valor en binario en 8 bits tendrá los pesos de 100g, 150g, 200g, 250g, (según mi código estoy trabajando a 8 bits con el ADRESH) para así usarlos para comparación mayor o igual y escoger la subrutina de posicionamiento correspondiente al valor
Creo que esas son mis preguntas, no se que recomendaciones puedan darme, disculpen si no me explique bien, si no entienden algo me lo dicen, les dejo el código que estoy usando (la parte de salida al puerto C era para ver el numero en 8 bits de cada peso que se usara para escoger la posición del Paso a paso, pero no fue de mucha utilidad en realidad).
El código lo único que hace es la conversión, envió de este valor directamente al PC, enviar este valor al puerto C para encender unos leds, la parte de posicionamiento del Paso a paso esta por aparte ahora solo estoy intentando arreglar esta parte. Espero alguien me pueda dar algún consejo, saludos. Espero una respuesta.
Primero ando realizando un proyecto que mida peso, después envié este valor de peso medido por medio de RS232 a la PC observándolo por el hyperteminal, después dependiendo de 4 pesos distintos se mueva a 4 posiciones distintas un motor paso a paso 0 grados, 90 grados, 180 grados y 270 grados. Ya realice el pesado haciendo uso de una celda de carga de 1kg (alimentada a 5V), la amplificacion la realice usando un INA128, a su vez la conversión ya logre realizarla, aqui es donde me encuentro confundido ya logre enviar este valor al PC por rs232 (use el max232 para esto) sin embargo tengo algunos problemas, los explicare en orden.
1- El valor de ADC no lo e transformado a gramos que es lo que deseo que vea en la PC, e recolectado varios valores y realice una tabla...
100 | 0.49
200 | 1.11
300 | 1.64
400 | 1.93
500 | 2.51
600 | 2.94
700 | 3.57
800 | 4.26
900 |4.54
1000 | 4.93
estos son los datos que obtuve (el peso muerto ya fue eliminado), ahora con estos datos, alguna idea de como hacer para que este valor de voltaje ya convertido por el ADC se vea en gramos en la PC?
2- Ahora teniendo los valores, mediré 4 pesos para realizar las cuatro posiciones del motor paso a paso, los cuales serán 100 g, 150g, 200 g, 250g, estos valores son aproximados, la exactitud no es muy necesaria. Ahora bien el problema es que al realizar la conversión la señal del valor analógico fluctúa lo cual hace que el valor de la conversión cambie un poco hacia arriba y otro poco hacia abajo, así que me pregunto alguna forma para que deje de cambiar no me sirve que cambie el valor, sera que me hace falta mejorarar la etapa de amplificación, o estas fluctuaciones son normales, las fluctuaciones son de alrededor de 20mV, pensé en tal vez modificar la resolución del ADC para que vea cambios mayores a este valor así solucionar esto, no se si es posible ya saben usando Vref+ y Vref-?
3- digamos que ya tengo todo listo, ahora la cuestión, es como se que valor en binario en 8 bits tendrá los pesos de 100g, 150g, 200g, 250g, (según mi código estoy trabajando a 8 bits con el ADRESH) para así usarlos para comparación mayor o igual y escoger la subrutina de posicionamiento correspondiente al valor
Creo que esas son mis preguntas, no se que recomendaciones puedan darme, disculpen si no me explique bien, si no entienden algo me lo dicen, les dejo el código que estoy usando (la parte de salida al puerto C era para ver el numero en 8 bits de cada peso que se usara para escoger la posición del Paso a paso, pero no fue de mucha utilidad en realidad).
Código:
LIST P=16F877
INCLUDE <P16F877.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
org 0x000
nop
nop
_inicio
bcf STATUS,RP0
bcf STATUS,RP1
movlw b'01000001'
movwf ADCON0
bsf STATUS,RP0
bcf STATUS,RP1
clrf TRISA
clrf TRISB
clrf TRISC
clrf TRISD
clrf TRISE
movlw b'00000111'
movwf OPTION_REG
movlw b'00001110'
movwf ADCON1
bsf TRISA,0
bcf STATUS,RP0
bcf STATUS,RP1
clrf PORTC
call RS232_Inicializa
_bucle
btfss INTCON,T0IF
goto _bucle
bcf INTCON,T0IF
bsf ADCON0,GO
_espera
btfsc ADCON0,GO
goto _espera
movf ADRESH,W
movwf PORTC
movf ADRESH,W
call RS232_EnviaNumero
goto _bucle ;Ir bucle
INCLUDE <RETARDOS.INC>
INCLUDE <RS232_1200.INC>
end
El código lo único que hace es la conversión, envió de este valor directamente al PC, enviar este valor al puerto C para encender unos leds, la parte de posicionamiento del Paso a paso esta por aparte ahora solo estoy intentando arreglar esta parte. Espero alguien me pueda dar algún consejo, saludos. Espero una respuesta.