Reporte 1 ultrasonico
-
Upload
isaac-hil -
Category
Technology
-
view
1.288 -
download
2
description
Transcript of Reporte 1 ultrasonico
DISEÑO E IMPLEMENTACIÓN DE UNSENSOR DE NIVEL ULTRASÓNICO
(HC-SR04)
65
985
986
987
988
989
990
991
992
993
994
129
130
UA
TX
OBJETIVOS
1. Diseñar e implementar un sensor de nivel, para medir el nivel de aguade un tanque.
2. Monitorear dicho sensor con el software LABVIEW.
Figura C.: Sensor de nivel monitoreado por LabView.
66
995
996
997
998999
1000
1001
1002
131
132
UA
TX
MATERIAL
El material que se utilizó se enlista a continuación:
1. Un microcontrolador PIC16F84A.
Figura C.: PIC16F84A
2. Un push-boton.
Figura C.: Push-botton.
3. Una resistencia de 10k ohms y una de 100 ohms, ¼ WATT.
Figura C.: Resistencias.
4. Un cristal de 4Mhz.
Figura C.: Cristal de 4Mhz.
5. 2 capacitores de 33pF.
67
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
10141015
1016
1017
1018
133
134
UA
TX
Figura C.: Capacitores de 33pF.
6. Un circuito integrado MAX232.
Figura C.: CI MAX232
7. 5 capacitores de 1uF y uno de 10uF.
Figura C.: Capacitor de 1uF.
8. Un regulador de voltaje L7805CV.
Figura C.: Regulador de voltaje.
9. Tres borneras para PCB dobles.
68
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
135
136
UA
TX
Figura C.: Borneras para PCB.
10. Un cable USB-SERIAL.
Figura C.: Cable USB-Serial marca STEREN.
11. Una conexión DB9 hembra.
Figura C.: Conexión DB9 HEMBRA
12. Una placa fenólica de 5cmx5cm.
Figura C.: Placa fenólica de 5cmX5cm.
13. Un módulo ultrasónico HC-SR04.
69
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
10421043
137
138
UA
TX
Figura C.: Módulo Ultrasónico HC-SR04.
14. Un cargador para celular de 5V.
Figura C.: Cardador para celular.
15. Una computadora con LABVIEW 2010.
Figura C.: Computadora con LABVIEW 2010.
70
1044
1045
1046
1047
1048
1049
1050
1051
1052
139
140
UA
TX
DESARROLLO
DISEÑO, SIMULACIÓN E IMPLEMENTACIÓN DE UNA INTERFAZ ELECTRÓNICA: SENSOR-COMPUTADORA.
Figura 0.: Bloques del diseño electrónico.
En la figura 17 se muestran los bloques que componen la interfazelectrónica de los cuales la computadora y el cable USB-serial solo setienen que conectar, el diseño de demás bloques se describen acontinuación:
SENSOR ULTRASÓNICO
71
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
141
142
UA
TX
Figura 0.: Sensor ultrasónico HC-SR04
Como sensor ultrasónico se utilizó un Módulo Ultrasónico modeloHC-SR04 el cual permite medir distancias de 2cm a 450cm sin hacercontacto con ellos. Su funcionamiento consiste disparar una ráfaga deultrasonidos de 40 khz y capturando el eco que estas producen dicho móduloproduce una señal proporcional a la distancia.
Las características del Módulo Ultrasónico son:
1. Voltaje de trabajo (VCC): 5V.2. Consumo de corriente: menor a 2mA.3. Señal de salida TTL.4. Angulo de medición: menor a 15°.5. Resolución: 0.3 cm.6. Señal de entrada para activación (TRIG): un pulso de por lo menos
10us.7. Señal de salida (ECHO): TTL.
Pines de conexión:
1. VCC2. TRIGGER3. ECHO4. GND
72
1064
1065
1066
1067
1068
1069
1070
1071
107210731074107510761077
10781079
1080
1081108210831084
143
144
UA
TX
Figura 0.: Pines de conexión
Figura 0.: Diagrama de tiempo
Para hacer funcionar este sensor primero se debe alimentar a 5V,después se ingresa a través del pin TRIG un pulso no menor de 10us, elmódulo enviará 8 pulsos TTL a una frecuencia de 40 khz, si encuentra unobstáculo el pin de salida ECHO mostrará un pulso en alto proporcional a ladistancia. La fórmula para calcular la distancia es:
73
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
145
146
UA
TX
Ecuación : Calcular la distancia en centímetros.
distancia (cm )=tiempoenalto enus ( pin ECHO)
58.82us
Para evitar medidas erróneas el objeto debe tener una superficie lisay no debe ser menor a 0.5 m2, pero en este caso el agua prácticamenterebota las ondas ultrasónicas.
MICROCONTROLADOR PIC16F84A
El microcontrolador PIC16f84A de la marca Microchip tiene las siguientescaracterísticas:
• Frecuencia de oscilación de 4Mhz.• Alimentación de 5V DC.• Tiene 18 pines.• Un puerto A con 5 lineas de entrada/saida.• Un puerto B con 8 lineas de entrada/saida.• Cada pin puede proporcionar hasta 20mA.• Las instrucciones se ejecutan en 1 ciclo.• Conjunto de instrucciones reducido, RISC (35 instrucciones).• Incluye también un módulo de memoria para programa y una
memoria auxiliar para datos del tipo EEPROM, por si falla laalimentación.
• Entradas multiplexadas para interrupciones y elcontador/temporizador.
Figura 0.: PIC16F84A.
74
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
110811091110111111121113111411151116
1117
11181119
11201121
1122
1123
1124
147
148
UA
TX
PROGRAMACIÓN DEL MICROCONTROLADOR
Para detectar el ancho de pulso proveniente del módulo ultrasónico,se utilizó la interrupción por cambio de flanco del PIN B0. Esto quiere decirque cuando ocurra un cambio de flanco ya sea de cero volts a cinco volts ode cinco volts a cero volts por el PIN B0, el microcontrolador suspenderácualquier operación que esté realizando para ejecutar la rutina previamenteprogramada cada vez que ocurra una interrupción.
Para medir el tiempo en alto del PIN B0 se utilizó el único TIMER delmicrocontrolador. El TIMER de este microcontrolador es de 8 bits (00h a FFh)y puede contar hasta 255 (28=256); si se configura el TIMER con oscilacióninterna, el TIMER incrementará cada 1us esto da como resultado un contadorde 255us.
Pero 255us no es suficiente ya que el ancho de pulso a medir llegahasta 26,469 us aproximadamente (Ecuación 2 y 3), por lo que se configuróel TIMER_0 con una escala de 1:256, entonces el TIMER_0 se incrementarácada 255 us dando un valor máximo de 65,535 us que es un valor aceptablepara este proyecto.
Ecuación : Calcular el tiempo en alto proporcional a la distancia.
distancia (cm )∗58.82us=tiempo enalto enus ( pin ECHO )
Ecuación : Cálculo del tiempo en alto proporcional a 4.5m
450cm∗58.82us=26,469us
Según el párrafo anterior si se tuviera un TIMER de 16 bits (65,536 us)configurado con una escala de 1:1 sería suficiente para medir una distancia4.5m (26,469 us). Pero como el PIC16F84A solo tiene un TIMER de 8bits seconfiguró con una escala de 1:256, esto permitió medir unidades de 4.33cm(Ecuación 4) pero no se puede medir distancias menores a 4.33cm por esose volvió a configurar el TIMER_0 con una escala de 1:1 para medir unidadesmilimétricas (1us); por último se sumaron las mediciones obtenidas con lasescalas de 1:256 y 1:1 para así obtener una medición exacta.
75
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
149
150
UA
TX
Ecuación : Cálculo de unidades en distancia con escala de TIMER_0 a 1:256.
distancia (cm )=tiempoenalto enus ( pin ECHO)
58.82us=
255us58.82us
=4.33 cm
Por ejemplo una distancia de 10cm equivale a 588.2us (Ecuación 2),el TIMER_0 a una escala de 1:256 devolverá un 2; el TIMER_0 a una escala de1:1 devolverá un valor de 78; ahora si sumamos los valores del TIMER_0 aescalas de 1:255 y 1:1 nos devolverá el microcontrolador un valor de 588us(Ecuación 5) que es una medición correcta.
Ecuación : Calculo de microsegundos a 10cm.
78us+(2∗255us )=78us+510us=588us
Cuando el PIC16F84A envía un pulso de aproximadamente 10us alMÓDULO ULTRASÓNICO, este módulo produce 8 pulsos a una velocidad de40 kHz, si encuentra un obstáculo produce una salida en alto proporcional ala distancia (PIN ECHO), esta señal es capturada y procesada por elPIC16F84A
El diagrama de flujo de la figura 22 contiene la secuencia que sesiguió para programar el PIC16F84A. El Anexo 1 contiene el programa en C,el cual se compiló con el software PIC C Compiler versión 4.068.
76
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
151
152
UA
TX
Figura 0.: Diagrama de flujo correspondiente a la programación del PIC16F84A.
77
1176
1177
153
154
UATX
INTERFÁZ TTL-RS232
El circuito integrado MAX232 convierte los niveles de las líneas de unpuerto serie RS232 a niveles TTL y viceversa. Lo interesante es que sólonecesita una alimentación de 5V, ya que genera internamente algunastensiones que son necesarias para el estándar RS232. Otros integrados quemanejan las líneas RS232 requieren dos voltajes, +12V y -12V.
Figura 0.: Configuración del CI MAX232.
En la figura anterior se puede observar la forma más usual paraconectar el circuito MAX232, en donde a todos los capacitores se les asignóun valor de 1uF. Se conectaron los pines 17 y 18 del PIC con los pines 11 y 12del MAX232, y los pines 14 y 13 del MAX232 con los pines 2 y 3 del conectorDB9 como se observa en la figura 24.
78
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
155
156
UA
TX
T1IN11
R1OUT12
T2IN10
R2OUT9
T1OUT 14
R1IN 13
T2OUT 7
R2IN8
C2+
4
C2-
5
C1+
1
C1-
3
VS+ 2
VS- 6
MAX232
MAX232
C1
1uF
C2
1uF
C3
1uF
C41uF
OSC1/CLKIN16
RB0/INT 6
RB1 7
RB28
RB3 9
RB4 10
RB5 11
RB6 12
RB7 13
RA0 17
RA118
RA2 1
RA3 2
RA4/T0CKI 3
OSC2/CLKOUT15
MCLR4
16F84A
PIC16F84A ERROR
TXD3
RXD2
CTS8
RTS7
DSR6
DTR4
DCD1
RI9
COM_HEMBRA
COMPIM
OSC1OSC2
RST
CONECTOR DB9 HEMBRA
OUT_PICIN_PIC
OUT_PICIN_PIC
ECHOTRIG
OUT_MAXOUT_MAX
IN_MAX
IN_MAX
LED
Figura 0.: Conexiones del PIC, MAX232 Y DB9
R_BUTOON10K
XTAL_4M
CRYSTAL
33PF_233pF
33PF_1
33pF
OS
C1
OS
C2
OSCILADOR
RST
RESET
1234
ULTRASONICO
TBLOCK-I4
TRIGECHO
LED
R_LED100
LEDLED-BLUE
Figura 0.: Conexiones del MÓDULO ULTRASÓNICO, LED, RESET Y EL OSCILADOR.
CABLE USB-SERIAL
El modelo del cable que se utilizó es el HL-2303 de la marca STEREN, que tiene en un extremoun conector DB9 macho que se conectó al conector DB9 hembra. (Figura 26)
Para que la computadora lo reconozca como un PUERTO COM, se tiene que instalarpreviamente un driver que se puede descargar del sitio STEREN.
79
1192
1193
1194
1195
1196
1197
11981199
12001201
157
158
UA
TX
Figura 0.: Cable USB-SERIAL
SIMULACIÓN DEL CIRCUITO
La simulación de la circuitería se realizó con el software Proteus 7.7.En dicha simulación no se incluyó el módulo ultrasónico ya que no estáincluido en las librerías de Proteus, pero en su lugar se utilizó un generadorde funciones para simular la salida ECHO del módulo ultrasónico.
En la figura 27 se representa la simulación de la circuitería, la cual sedescribe a continuación:
1. Para el oscilador se utilizó un cristal de 4Mhz y 2 capacitoresde 33pF. Para evitar confusión con el cableado en la simulación,se utilizaron 2 nodos (OSC1 Y OSC2) conectados a los pines 15 y16 del microcontrolador.
2. Para el reset, se utilizó una resistencia de 10k ohms y unpush-boton. Mientras el push-boton esté abierto elmicrocontrolador trabajará normalmente. El nodo que se utlilizóes el RST conectado al pin 4 del microcontrolador.
3. Se utilizaron 2 instrumentos virtuales, un generador de onday un osciloscopio. Con el generador de onda se genera unpulso en similar al que genera el módulo ultrasónico y con elosciloscopio se visualizan 2 señales, una correspondiente algenerador de onda y la otra corresponde a los pulsos de 10usque genera el microcontrolador por el pin B1.
4. También se simuló el circuito MAX232 con sus capacitores de1uF, el cual está conectado al PIC16F84 y a un conector DB9hembra. Por el pin 11 recibe una señal TTL la convierte a RS232por el pin 14, igualmente por el pin 13 recibe una señal RS232 yla convierta a TTL por el pin 12.
5. Para conector DB9 hembra, el pin 5 está conectado a tierra, elpin 2 es para recepción de datos y el pin 3 es para transmisión
80
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
12141215
1216
1217
12181219
1220
1221
1222
1223
12241225
1226
1227
1228
12291230
1231
159
160
UA
TX
de datos. Los puentes son opcionales, mientras que los demáspines no se utilizan.
6. En la parte inferior aparecen 2 terminales virtuales, unaterminal es para enviar datos al PIC (simulando a lacomputadora) y la otra terminal es para visualizar los datosprovenientes del PIC.
A
B
C
D
R_BUTOON100
OSC1/CLKIN16
RB0/INT 6
RB1 7
RB2 8
RB3 9
RB4 10
RB511
RB6 12
RB713
RA017
RA1 18
RA21
RA3 2
RA4/T0CKI3
OSC2/CLKOUT15
MCLR4
16F84A
PIC16F84A
XTAL_4M
CRYSTAL
33PF_233pF
33PF_1
33pF
OS
C1
OS
C2
OSC1OSC2
OSCILADOR
RST
RST
RESET
B6
MAX232
RXD
RTS
TXD
CTS
RXD
RTS
TXD
CTS
OSCILOSCOPIO
SIMULA LA TRANSMISIÓN DE DATOS DE LA COMPUTADORA
SIMULA LA RECEPCIÓN DE DATOS DE LA COMPUTADORA
OUT_PIC
OUT_PIC
IN_PIC
IN_PIC
ECHO
ECHO
TRIG
TRIG
LED
LED
R_LED100
LEDLED-BLUE
AM FM
+
-
GENERADOR DE ONDA
ECHO
T1IN11
R1OUT12
T2IN10
R2OUT9
T1OUT14
R1IN 13
T2OUT 7
R2IN 8
C2+
4
C2-
5
C1+
1
C1-
3
VS+ 2
VS- 6
MAX232
MAX232
C1
1uF
C2
1uF
C3
1uF
C41uF
ERROR
TXD3
RXD2
CTS8
RTS7
DSR6
DTR4
DCD1
RI9
COM_HEMBRA
COMPIM
CONECTOR DB9 HEMBRA
OUT_PICIN_PIC
OUT_MAXOUT_MAX
IN_MAX
IN_MAX
Figura 0.: Diagrama de simulación.
Al simular el circuito anterior aparecen 4 ventanas (figura 28):
81
1232
12331234
1235
1236
1237
1238
1239
1240
1241
1242
161
162
UA
TX
Figura 0.: Simulación en Proteus 7.7.
Los puntos que se comprobaron con esta simulación fueron los siguientes:
1. El microcontrolador produce los pulsos de 10us sin ningún problemacuando se ingresa un dato en modo USART por el pin A1 delmicrocontrolador.
2. Al procesar el ancho de pulso entrante en el pin B0 del PIC, dichomicrocontrolador envía el valor de la variable DISTANCIA por el pin A0en modo USART. En pocas palabras la comunicación USART delmicrocontrolador funciona correctamente.
3. El generador de onda no fue de mucha ayuda ya que no se puedeemular el tiempo de respuesta como el Módulo Ultrasónico, pero enconfiando en las especificaciones del Módulo Ultrasónico se hicieronpruebas en un protoboard y el resultado fue satisfactorio.
PRUEBAS
82
Hiperterminal Virtual.- Aquí seescribe un carácter, emulandola información que entra al PIC.
Hiperterminal Virtual.-Aquí aparece la
información que sale delPIC.
Pulso del generador de onda,emulando la respuesta del
Módulo Ultrasónico
Pulso TRIGGER proveniente del PIC.
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
12541255
1256
1257
12581259
1260
1261
1262
1263
163
164
UA
TX
El circuito se armó de acuerdo a la simulación en Proteus (Fig. 27) en un protoboard. (Figura 29)
Figura 0.: Circuito armado en un protoboard.
La primera prueba que se realizó fue medir la distancia que hay entreel sensor ultrasónico y la pared (Figura 30). En esta prueba hubo un error deaproximadamente 0.4cm.
Al realizar mediadas de hasta 4.5m, se comprobó que hay un error de0.4cm a 2cm. Esto se debe a que la superficie donde rebotan las ondasultrasónicas no es la adecuada, según las especificaciones del móduloultrasónico la superficie debe ser lisa y de un mínimo de 0.5m2. Los mismoserrores se obtuvieron al colocar diferentes objetos pequeños.
83
MICFROCONTROLADORPIC16F84A
FUENTE DE5VDC
CIRCUITOINTEGRADO
MAX232
CONEXIÓNRS-232
MóduloUltrasónico
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
165
166
UA
TX
Figura 0.: Medición entre el Sensor Ultrasónico una pared.
También se realizaron pruebas en un bote con agua. (Figuras 31 y32)
Figura 0.: Pruebas con en un bote con agua.
84
1282
1283
1284
1285
1286
1287
1288
1289
167
168
UA
TX
Los resultados de las mediciones y comparaciones se presentan en lasiguiente tabla:
Tabla : Resultados con agua.
TABLA DE RESULTADOS CON AGUA
Medida real (cm) Medida en labview (cm) Diferencia (cm)
2.7 2.8 0.1
7.9 8 0.1
15.8 15.7 0.1
24.2 24.3 0.1
33 33 0
De acuerdo a la tabla anterior se comprobó que el funcionamiento delmódulo ultrasónico es correcto, también se concluye que el margen de errores aceptable siendo de aproximadamente de 1 milímetro.
Figura 0.: Marcas en el bote.
DISEÑO DE PCB
85
Marcas conplumón negro.
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
169
170
UA
TX
Primero utilizó el software ISIS de Proteus 7.7 para agregar loscomponentes necesarios (Fig. 33), después se utilizó el software ARES deProteus 7.7 para diseñar la PCB (Figuras 34, 35 y 36).
En la figura 33 aparecen los componentes necesarios para elaborar laPCB destacando que no se utilizaron las conexiones para simulación ya quegeneraría un error, simplemente se utilizó ISIS como una herramienta dedibujo. Para la fuente de poder se agregó una bornera doble donde seconectará una fuente igual o mayor a 5VDC y se agregó una borneracuádruple para conectar el Módulo Ultrasónico.
D
R_BUTOON10K
T1IN11
R1OUT12
T2IN10
R2OUT9
T1OUT14
R1IN13
T2OUT7
R2IN8
C2+
4
C2-
5
C1+
1
C1-
3
VS+2
VS-6
MAX232
MAX232
C1
1uF
C2
1uF
C3
1uF
C41uF
OSC1/CLKIN16
RB0/INT6
RB17
RB28
RB39
RB410
RB511
RB612
RB713
RA017
RA118
RA21
RA32
RA4/T0CKI3
OSC2/CLKOUT15
MCLR4
16F84A
PIC16F84A
XTAL_4M
CRYSTAL
33PF_233pF
33PF_1
33pF
ERROR
TXD3
RXD2
CTS8
RTS7
DSR6
DTR4
DCD1
RI9
COM_HEMBRA
COMPIM
OS
C1
OS
C2
OSC1OSC2
OSCILADOR
RST
RST
RESET
CONECTOR DB9 HEMBRA
VI1
VO3
GN
D2
REGULADOR78051 2
POWER 5VDC-12VDC
1234
ULTRASONICO
TBLOCK-I4
C_10U10uF
C_1U1uF
OUT_PICIN_PIC
OUT_PICIN_PIC
ECHOTRIG
TRIGECHO
OUT_MAX OUT_MAX
IN_MAXIN_MAX
LED
LE
D
R_LED100
LEDLED-BLUE
Figura 0.: Componentes para la PCB.
86
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
171
172
UA
TX
Figura 0.: Vista superior de la PCB.
Figura 0.: Vista inferior de la PCB.
Figura 0.: Vista 3D de la PCB.
87
1315
1316
1317
1318
1319
1320
1321
173
174
UA
TX
Después de tener el diseño en ARES se procedió a construir el circuitoimpreso en ARES (Fig. 37), acoplarlo a una estructura de acrílico (Fig. 38) y colocar el prototipo en un tanque de agua (Fig. 39).
Figura 0.: Vista superior real de la PCB.
Figura 0.: Vista inferior real de la PCB acoplada a una estructura de acrílico.
88
5VDC-12VDC
Terminal positiva.
Trigger
GND
5VDC
1322
1323
1324
1325
1326
1327
1328
1329
1330
175
176
UA
TX
Figura 0.: PCB acoplada a un tanque de agua.
INTERFAZ DE LABVIEW
Labview es un entorno de programación gráfica usado por miles deingenieros e investigadores para desarrollar sistemas sofisticados de medida,pruebas y control usando íconos gráficos e intuitivos y cables que parecen undiagrama de flujo.
Para este trabajo se utilizó la versión Labview 2010, el cual traealgunos ejemplos para la comunicación RS-232. El ejemplo que se utilizó fueel de comunicación serial básico, dicho ejemplo modificó suprimiendo lamayoría de las instrucciones para hacerlo más simple.
El diagrama de flujo de la figura 40 representa la programación enLabView 2010.
89
Prototipo acoplado aun tanque 1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
177
178
UA
TX
Figura 0.: Diagrama de flujo del VI.
90
1344
1345
179
180
UA
TX
Las siguientes figuras contienen la programación (Diagrama aBloques) en LabView según el Diagrama de Flujo (Fig 40), en las cuales seindica con comentarios amarillos para que sirve cada instrucción.
Figura 0.: Frame 0 y Case False.
Figura 0.: Frame 0 y Case True.
91
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
181
182
UA
TX
Figura 0.: Frame 1.
Figura 0.: Frame 2.
92
1356
1357
1358
1359
1360
1361
1362
1363
1364
183
184
UA
TX
Figura 0.: Frame 3.
Por último la figura 46 contiene el Panel Frontal del programa en LabView.
Figura 0.: Panel Frontal.
PUESTA EN MARCHA
93
1365
1366
1367
1368
1369
1370
1371
1372
1373
185
186
UA
TX
Para poner en marcha este prototipo se necesitan seguir los siguientes pasos:
1. Conectar el cable USB-SERIAL a la computadora e instalar el driver su driver.2. Una vez instalado el driver de cable USB-SERIAL se tiene que habilitar el puerto serial
en Measurement & Automation Explorer de NI. Esto es para LabView 2010, si seomite este paso al correr cualquier VI para RS232 generará un error.
Figura 0.: Icono de Measurement & Automation.
Figura 0.: Interfaz de Measurement % Automation.
3. Conectar una fuente entre 6VCD y 12VCD al prototipo; puede ser una pila de 9VCD o en este caso un cargador para celular.
94
1374
1375137613771378
1379
1380
1381
1382
1383
138413851386
187
188
UA
TX
4. Conectar la punta DB9 macho del cable USB-SERIAL a la conexión DB9 hembra del prototipo.
Figura 0.: Conexión del cable USB-SERIAL a el prototipo.
5. Abrir y correr el VI que se describió en el bloque anterior, en este ejemplo se llama sensor ultrasónico.vi.
95
6VCD a12VCD
Terminal positiva.
1387
1388
13891390
1391
1392
13931394
189
190
UA
TX
Figura 0.: Programa “sensor ultrasónico.vi”.
Figura 0.: Monitoreo del módulo ultrasónico con LabView.
96
1395
1396
1397
1398
1399
14001401
191
192
UA
TX
ANEXO 1
El programa de este anexo se programó en el software PIC CCOMPILER, dicho software genera 10 archivos diferentes, entre los cualesestá uno con extensión “.HEX”, este archivo sirve para simular elmicrocontrolador en Proteus de acuerdo a las instrucciones programadas enlenguaje C y también sirve para programar físicamente el microcontroladorcon cualquier grabador de PICs.
El siguiente programa contiene comentarios después de doblediagonal “//” donde se trata de indicar para que sirven la mayoría deinstrucciones:
#include <16f84A.h> //modelo del pic
#use delay (clock = 4000000) //se utilizará un oscilador de 4Mhz
#fuses XT,NOWDT,PUT,NOPROTECT //configuración para programar el pic
#use RS232 (BAUD = 9600, BITS = 8, PARITY=N,XMIT=PIN_A0,RCV=PIN_A1)
//configuración de la comunicación RS232
//velocidad de 9600 bd
//8 bits por palabra
//paridad: ninguna
//pin de transmición: A0
//pin de recepción: A1
#use fast_io(B) //función predefinida para trabajar
//fácilmente con el puerto B
//------------------------------VARIABLES A USAR---------------------
int16 U_SEG=0; //GUARDA LOS MICROSEGUNDOS EN ALTO DEL PIN B0
INT16 L_TMR0=0; //GUARDA EL VALOR DEL REGISTRO TIMER_0
INT16 LOAD_256=0; //valor de TMR0 con preesaler de 256
INT16 LOAD_1=0; //valor de TMR0 con preesdaler de 1
int32 DISTANCIA=0; //DISTANCIA EN CENTIMETROS * 10
int1 nuevopulso=0; //control de lectura de pulso
//cuando es uno, la lectura terminó
int1 cambio=0; //control de cambio de flanco
//si es cero se espera un flanco de subida
//si es uno se espera un flanco de bajada
97
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446
193
194
UA
TX
int1 valor=0; //DETECTA SI LA COMPUTADORA A ENVIADO ALGO
//--------------------------INTERRUPCION POR EL PIN B0----------------
#int_ext //aquí inicia la interrupción por B0
void funcion_ext_int(){ //función de interrupción
if (cambio == 0){
set_TIMER0(0); //iniclaliza el timer0 a 0
ext_int_edge(H_TO_L); //CAMBIA A DETECCIÓN POR FLANCO DE BAJADA
cambio=1;
}
else{
L_TMR0 = get_timer0(); //CARGA EL VALOR DE TMR0 EN EL REGISTRO L_TMR0
ext_int_edge(L_TO_H); //CAMBIA A DETECCIÓN POR FLANCO DE SUBIDA
cambio=0;
nuevopulso=1;
}
}
//------------------------FUNCIÓN PRINCIPAL-----------------------------
void main(){
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256); //configuración del timer0
//OSCILACIÓN INTERNA
//PREESCALER DE 1
ext_int_edge(L_TO_H); //configurar INTERRUPCIÓN POR PIN B0
//para flanco de suida
set_tris_B(0x81); //CONFIGURA LOS PINES B0 y B7 COMO ENTRADA
//LOS DEMÁS PINES COMO SALIDA
output_low(PIN_B1); //PIN B1 A CERO
enable_interrupts (int_ext); //habilitación de interrupción por el pin B0
enable_interrupts (global); //habilitación de interrupciones globales
//buble while infinito
while(true){
//se inicializan todas las variables a cero
U_SEG=0;
L_TMR0=0;
LOAD_256=0;
LOAD_1=0;
DISTANCIA=0;
nuevopulso=0;
cambio=0;
valor=0;
98
14471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499
195
196
UA
TX
//Como la comunicación está gestionada por software,
//la función kbhit() devuelve TRUE si se ha detectado un bit
//de START en el pin de recepción.
valor = kbhit();
while(valor==0){
valor = kbhit();}
//en la siguiente instrucción se complementa el valor del pin b3
//con esto el pin b3 cambia de estado cada procesa la
//recepción y transmición serial
output_toggle(PIN_B3);
RUTINA_1:
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256); //configuración del timer0
//con preescaler de 256
output_high(PIN_B1); //pone el pin B1 en alto
delay_us(9); //espera 15 microsegundos
output_low(PIN_B1); //pone el pin B1 en bajo
while(nuevopulso == 0){ //espera hasta que nuveopulso sea 1
}
LOAD_256=L_TMR0; //se guarda el valor de TMR0 con preescaler
//de 256
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_1); //configuración del timer0
//con preescaler de 1
delay_ms(30);
RUTINA_2:
nuevopulso=0; //control de lectura de pulso
output_high(PIN_B1); //pone el pin B1 en alto
delay_us(9); //espera 15 microsegundos
output_low(PIN_B1); //pone el pin B1 en bajo
while(nuevopulso == 0){ //espera hasta que nuveopulso sea 1
}
LOAD_1=L_TMR0; //se guarda el valor de TMR0 con preescaler
//de 1
U_SEG=(LOAD_256*255)+(LOAD_1); //U_SEG almacena el total del
//tiempo en alto en microsegundos
99
15001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552
197
198
UA
TX
//del pin B0
DISTANCIA = (U_SEG*10)/58; //DISTANCIA almacena
//la distancia en centimetros
//multiplicada por 10
printf("%Lu\n",DISTANCIA); //envía el valor de DISTANCIA
//en formato RS-232
}
}
100
15531554155515561557155815591560156115621563
199
200
UA
TX
1564
UA
TX