Autor Tema: lectura de varios adc para calibrar instrumento  (Leído 1324 veces)

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

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
lectura de varios adc para calibrar instrumento
« en: 13 de Abril de 2014, 21:36:49 »
hola que tal amigos del foro :) queria ver si me pueden ayudar en este proyecto el cual ya eh planteado por otro tema que era una imprecion en pantalla sobre un caracter no convencional y ya me han ayudado, pero como esta parte no tiene nada que ver con eso ,si bien es el mismo proyecto ,decidi volver a abrir el tema el cual me parece muy interesante  .Bueno  estoy tratando de hacer un instrumento que mide la posicion de un timon de un barco y consiste en lo siguiente con un potenciometro (lineal) entro en el canal (an0) del pic y represento en un lcd 2 x 16 tanto en barras como en grados la posicion del timon , despues tengo 3 preset que son las regulaciones: por el canal (an1) regulo el tope de babor, por el canal (an2) el tope de estribor y por el canal (an3) el cero o centro, ahora el problema comienza que lo que eh querido hacer es que se represente la lectura del cursor en la pantalla comparandola con la siguiente cuenta por ejemplo: resto el valor de uno de los topes - cero y lo divido por 7 que son la cantidad de espacios que voy a llenar con rayas en la pantalla y despues lo voy multiplicando x 2 , x 3 , x 4 y asignando estos valores a variables tipo float y comparando ese resultado con el valor del cursor para que aparezca en pantalla . Bueno primero no se si se puede hacer de esta manera y segunndo nose  bien en que parte tengo que hacer las cuentas  y la sintaxis correcta . Bueno espero haberme expresado correctamente  y ojala me puedan ayudar ,les adjunto el codigo y Saludos a todos !!!
Código: C
  1. #include<16f88.h>
  2. #device adc =10
  3. #use delay (clock=4M)
  4. #fuses XT,NOWDT
  5. #include <lcd.c>
  6.  
  7. float a,b,c,d,e,f;
  8. float cursor,toper,topbr,calculo,resultado;
  9. float cero,bandabr,bandaer;
  10.  
  11. }
  12. void main()
  13. {
  14.    
  15.      setup_adc_ports(sAN0|sAN1|sAN2|sAN3|VSS_VDD);// habilitacion de canales adc >
  16.      setup_adc(ADC_CLOCK_DIV_2);          
  17.    
  18.      lcd_init();
  19.    
  20. while(1){
  21.    
  22.    //*********************************************************
  23.    set_adc_channel(0); //habilitacion canal 0
  24.    delay_us(20);
  25.    cursor= read_adc();     //lectura canal 0 a variable cursor    
  26.    
  27.   //**********************************************************  
  28.    set_adc_channel(1);
  29.    delay_us(20);
  30.    topbr =read_adc();
  31.    bandabr=(topbr-cero)/7;
  32.  
  33.  
  34.  //*********************************************  
  35.    set_adc_channel(2);
  36.    delay_us(20);
  37.    toper=read_adc();
  38.    bandaer=(cero-toper)/7;
  39.    a=bandaer*2;           // esto mismo tendria que repetirlo en el canal 1
  40.    b=bandaer*3;           // donde tendria que hacer todas estas cuentas
  41.    c=bandaer*4;
  42.    d=bandaer*5;
  43.    e=bandaer*6;
  44.    f=bandaer*7;
  45. //*********************************************  
  46.    set_adc_channel(3);
  47.    delay_us(20);
  48.    cero=read_adc();
  49.    //*****************************************************************
  50.  
  51.  
  52.    
  53. if(cursor==toper)
  54.   {
  55.   output_high(PIN_a3);//led************************
  56.   lcd_gotoxy(1,1);
  57.   printf(lcd_putc,"      35\337er  top");
  58.   lcd_gotoxy(1,2);
  59.   printf(lcd_putc,"       |>>>>>>>>");
  60.  
  61.   }
  62. if (cursor==a)
  63. {
  64.  
  65. lcd_gotoxy(1,1);
  66. printf(lcd_putc,"      30\337er  ");
  67. lcd_gotoxy(1,2);
  68. printf(lcd_putc,"       |>>>>>>> ");
  69.  
  70. }
  71. if(cursor==b)
  72. {
  73. lcd_gotoxy(1,1);
  74. printf(lcd_putc,"       25\337er");
  75. lcd_gotoxy(1,2);
  76. printf(lcd_putc,"        |>>>>>>  ");
  77. }
  78. if (cursor==c)
  79. {
  80. lcd_gotoxy(1,1);
  81. printf(lcd_putc,"       20\337er");
  82. lcd_gotoxy(1,2);
  83. printf(lcd_putc,"        |>>>>>   ");
  84. }
  85.  
  86. if (cursor==d)
  87. {
  88. lcd_gotoxy(1,1);
  89. printf(lcd_putc,"       15\337er");
  90. lcd_gotoxy(1,2);
  91. printf(lcd_putc,"        |>>>    ");
  92. }
  93. if (cursor==e)
  94. {
  95.  
  96. lcd_gotoxy(1,1);
  97. printf(lcd_putc,"       10\337er");
  98. lcd_gotoxy(1,2);
  99. printf(lcd_putc,"        |>>     ");
  100. }
  101. if(cursor==f)
  102. {
  103. lcd_gotoxy(1,1);
  104. printf(lcd_putc,"        5\337er");
  105. lcd_gotoxy(1,2);
  106. printf(lcd_putc,"        |>      ");
  107. }
  108.  
  109. if (cursor==cero)          // compara cursor con el valor del prest que regula el 0 (canal an_3)
  110. {
  111.   lcd_gotoxy(1,1);
  112.   printf(lcd_putc,"       0        ");
  113.   lcd_gotoxy(1,2);
  114.   printf(lcd_putc,"       |        ");
  115. }
  116.  
  117. if (cursor==topbr)          // de aca para abajo seria lo mismo
  118. {
  119. lcd_gotoxy(1,1);
  120. printf(lcd_putc,"top   35\337br      ");
  121. lcd_gotoxy(1,2);
  122. printf(lcd_putc,"<<<<<<<|        ");
  123. }
  124.  
  125.    }
  126. }
El tiempo es una ilusión ,solo existe el presente................