What Will I Learn?
- You will learn understand the adc function in telemetry
- You will learn understand the working principle of controlled adc
- You will learn understand the working principle of temperature sensors that can be applied to the computer
Requirements
- Make the program as ordered
- Note any character writing
- Measure each input voltage adc
- Measure the outgoing voltage from the adc
Difficulty
- Intermediate
Tutorial Contents
What is adc?
Analog to Digital Converter (ADC) is a device designed to convert analog signals into digital signals. IC ADC 0804 is considered to meet the needs of the series to be made. This type of IC works closely by adding a few components according to the specifications that must be provided and can quickly convert a voltage input. Matters that also need attention in the use of this ADC are the maximum voltage ADC can convert from the signal conditioning circuit, resolution, external timer ADC, output type, accuracy and conversion time. There are many ways that can be used to convert analog signals into digital signals whose value is proportional. The type of ADC commonly used in design is the Successive Approximation Convertion (SAR) type or multilevel approach which has a much shorter conversion time and is independent of the analog input value or the signal to be changed. Here's an example of an adc image
Briefly the working principle of the A / D converter is that all the bits are set and then tested, and when necessary in accordance with the conditions specified. With the fastest circuit, the conversion will be completed after 8 clocks, and the D / A output is an analog value equivalent to the SAR register value. When a conversion has been executed, the reset signal sends a low-conversion finish. The down side of this signal will produce equivalent digital data into the buffer register. Thus, the digital output will remain stored even though new conversion cycles will begin.
IC ADC 0804 has two analog inputs, Vin (+) and Vin (-), so it can accept differential input. The actual analog input (Vin) is equal to the difference between the voltages connected to the two input pins Vin = Vin (+) - Vin (-). If the analog input is a single voltage, it must be connected to Vin (+), while Vin (-) is grounded. For normal operation, ADC 0804 uses Vcc = + 5 Volt as the reference voltage. In this case the range of analog input ranges from 0 Volts to 5 Volts (full scale), since this IC is an 8-bit SAC, the resolution will be equal to resolution
The ADC 0804 IC has an internal clock generator which must be activated by connecting an external resistor R between the CLK OUT and CLK IN pins and an external capacitor (C) between CLK IN and the digital ground. The clock frequency obtained at the CLK OUT pin
For this clock signal can also be used an external signal connected to the CLK IN pin. ADC 0804 has 8 digital outputs that can be directly connected to the microcomputer data channel. Chip Select input (active LOW) is used to enable ADC 0804. If HIGH logic, ADC 0804 is off (disabled) and all outputs are in high impedance state. Input Write or Start Convertion is used to start the conversion process. For it must be given a pulse logic 0. While the output interrupt or end of convertion declare the end of the conversion. At the start of a conversion, it will change to logic 1. At the end of the conversion will return to logic 0.
PIN LCD
LCD is discussed on this lab is LCD type 2x16 digit has 14 pin plus 2 pin for backligth. The picture below shows the 2x16 digit LCD pin configuration.
List of tools and materials
- Proteus Simulator 7.4
- MIDE-51
- Computer Units
Drawing circuit work
Run the program that has been written below
ORG 0h
dataadc equ 60h
call init_lcd
call pre_disp
call pre_disp2
start: call channel
call baca_ADC
call display
ljmp start
channel:
clr p2.3 ;selektor A
clr p2.4 ;selektor B
clr p2.5 ;selektor C
ret
baca_ADC:
setb p3.6;wr
setb p3.7;rd
call delay
clr p3.6
call delay
setb p3.6
jb p3.2,$
call delay
clr p3.7
acall delay
mov a,p0
mov dataadc,a
acall delay
ret
display:
mov dptr,#ratusan
mov a,dataadc
movc a,@a+dptr
mov 32h,a ;
mov dptr,#puluhan
mov a,dataadc
movc a,@a+dptr
mov 31h,a
mov dptr,#satuan
mov a,dataadc
movc a,@a+dptr
mov 30h,a
mov r1,#0cch ;pesan tempat di kolom 12 di baris 2
acall write_inst
mov a,30h
add a,#30h ;ascci dari satuan
mov r1,a
acall write_data
mov r1,#0cbh ;pesan tempat di kolom 11 di baris 2
acall write_inst
mov a,31h
add a,#30h ;ascci dari puluhan
mov r1,a
acall write_data
mov r1,#0cah ;pesan tempat di kolom 10
Line 2
acall write_inst
mov a,32h
add a,#30h ;ascci dari ratusan
mov r1,a
acall write_data
ret
pre_disp: mov dptr,#baris_1
mov r6,#0eh
ulangi1: clr a
movc a,@a+dptr
inc dptr
mov r1,a
call write_data
DJNZ R6,ulangi1
ret
pre_disp2: mov r1,#0c0h
call write_inst
mov dptr,#baris_2
mov r6,#0fh
ulangi2: clr a
movc a,@a+dptr
inc dptr
mov r1,a
call write_data
djnz r6,ulangi2
ret
Init_lcd: mov r1,#01H ;Display clear
call write_inst
mov r1,#38H ;Function set, Data 8 bit,2 line font 5x7
call write_inst
mov r1,#0CH ;Display on, cursor off,cursor blink off
call write_inst
mov r1,#06H ;Entry mode, Set increment
call write_inst
ret
Write_inst: clr P2.0 ; = RS =0
clr P2.1
mov P1,R1 ; P0 = D7 s/d D0 = R1
setb P2.2 ; =EN = 1
call delay ; call delay time
clr P2.2 ; =EN = 0
ret
Write_data: setb P2.0 ; = RS =1
clr P2.1 ; R/W = 0
mov P1,R1 ; P0 = D7 s/d D0 = R1
setb P2.2 ; =EN = 1
call delay ; call delay time
clr p2.2 ; =EN = 0
ret
delay: mov R0,#50
delay1:mov R7,#0fh
djnz R7,$
djnz R0,delay1
ret
baris_1: DB "TELEMETRI SUHU "
baris_2: DB "DATA ADC= ",0DFH,"C"
satuan:
db 0,0,0,1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,7,7,7,8,8,9,9,9,0,0,1,1,1,2,2,2,3,3,4,4
db 4,5,5,6,6,6,7,7,8,8,8,9,9,0,0,0,1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,7,7,7,8,8,9,9
db 9,0,0,1,1,1,2,2,2,3,3,4,4,4,5,5,6,6,6,7,7,8,8,8,9,9,0,0,0,1,1,2,2,2,3,3,3,4
db 4,5,5,5,6,6,7,7,7,8,8,9,9,9,0,0,1,1,1,2,2,2,3,3,4,4,4,5,5,6,6,6,7,7,8,8,8,9
db 9,0,0,0,1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,7,7,7,8,8,9,9,9,0,0,1,1,1,2,2,2,3,3,4
db 4,4,5,5,6,6,6,7,7,8,8,8,8,9,9,0,0,0,1,1,2,2,2,3,3,4,4,5,5,5,6,6,7,7,7,8,8,9
db 9,0,0,0,1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,7,7,7,8,8,9,9,9,0
Puluhan:
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1
DB 1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
DB 2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4
DB 4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
DB 5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7
DB 7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
DB 8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0
ratusan:
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
end
From the results of the program that has been made then can be followed the results obtained in the table below.
Calculations that can be obtained
Vx = VR [b12-1 + b22- 2 + b32-3 + b42 - 4 + b52-5 + b62-6 + b72-7 + b82-8]
Temperature 00
Vx = 5 [0 × 2-1 + 0 × 2- 2 + 0 × 2-3 + 0 × 2 - 4 + 0 × 2-5 + 0 × 2-6 + 0 × 2-7 + 1 × 2- 8]
= 5 [1 × 2-8]
= 5 [0.0039]
= 0.01V
Percentage
= 100%
Temperature 50
Vx = 5 [0 × 2-1 + 0 × 2- 2 + 0 × 2-3 + 0 × 2 - 4 + 1 × 2-5 + 1 × 2-6 + 0 × 2-7 + 1 × 2- 8]
= 5 [1 × 2-5 + 1 × 2-6 + 1 × 2-8]
= 5 [0.0508]
= 0.253V
Percentage
= 97.3%
Temperature 100
Vx = 5 [0 × 2-1 + 0 × 2- 2 + 0 × 2-3 + 1 × 2 - 4 + 1 × 2-5 + 0 × 2-6 + 1 × 2-7 + 0 × 2- 8]
= 5 [1 × 2 - 4 + 1 × 2-5 + 1 × 2-7]
= 5 [0.1016]
= 0.507V
Percentage
= 99.4%
Temperature 200
Vx = 5 [0 × 2-1 + 0 × 2- 2 + 1 × 2-3 + 1 × 2 - 4 + 0 × 2-5 + 0 × 2-6 + 1 × 2-7 + 1 × 2- 8]
= 5 [1 × 2-3 + 1 × 2- 4 + 1 × 2-7 + 1 × 2-8]
= 5 [0.199]
= 0.996V
Percentage
= 99.6%
Temperature 300
Vx = 5 [0 × 1 × 2- 2-1 + 2 + 0 + 0 × 2-3 × 2-4 + 1 × 1 × 2-5 + 2-6 + 2-7 + 0 × 0 × 2- 8]
= 5 [1 × 2- 2 + 1 × 2-5 + 1 × 2-6]
= 5 [0.296]
= 1.48V
Percentage
= 95.4%
Temperature 400
Vx = 5 [0 × 1 × 2- 2-1 + 2 + 1 + 0 × 2-3 × 2-4 + 2-5 + 0 × 1 × 1 × 2-6 + 2-7 + 0 × 2- 8]
= 5 [1 × 2- 2 + 1 × 2-3 + 1 × 2-6 + 1 × 2-7]
= 5 [0398]
= 1.992V
Percentage
= 97.5%
Temperature 500
Vx = 5 [1 × 2-1 + 0 × 2- 2 + 0 × 2-3 + 0 × 2 - 4 + 0 × 2-5 + 0 × 2-6 + 1 × 2-7 + 0 × 2- 8]
= 5 [1 × 2-1 + 1 × 2-7]
= 5 [0.507]
= 2.53V
Percentage
= 99.6%
Temperature 600
Vx = 5 [1 × 2-1 + 0 × 2- 2 + 0 × 1 × 2-3 + 2-4 + 2-5 + 0 × 1 × 1 × 2-6 + 2-7 + 1 × 2- 8]
= 5 [1 × 2-1 + 1 × 2 - 4 + 1 × 2-5 + 1 × 2-7 + 1 × 2-8]
= 5 [0.605]
= 3.02V
Percentage
= 99.3%
Temperature 700
Vx = 5 [1 × 2-1 + 0 × 2- 2 + 1 × 1 × 2-3 + 2-4 + 0 × 1 × 2-5 + 2-6 + 2-7 + 0 × 0 × 2- 8]
= 5 [1 × 2-1 + 1 × 2-3 + 1 × 2 - 41 × 2-6]
= 5 [0.7031]
= 3.51V
Percentage
= 99.4%
Temperature 800
Vx = 5 [1 × 1 × 2- 2-1 + 2 + 0 + 0 × 2-3 × 2-4 + 1 × 1 × 2-5 + 2-6 + 2-7 + 0 × 1 × 2- 8]
= 5 [1 × 2-1 + 1 × 2-2 + 1 × 2 - 5 + 1 × 2-6 + 1 × 2-8]
= 5 [08008]
= 4.00V
Percentage
= 99.2%
Temperature 900
Vx = 5 [1 × 2-1 + 1 × 2- 2 + 1 × 2-3 + 0 × 2 - 4 + 0 × 2-5 + 1 × 2-6 + 1 × 2-7 + 1 × 2- 8]
= 5 [1 × 2-1 + 1 × 2- 2 + 1 × 2-3 + 1 × 2-6 + 1 × 2-7 + 1 × 2-8]
= 5 [0.902]
= 4.51V
Percentage.
= 99.7%
Temperature 1000
Vx = 5 [1 × 2-1 + 1 × 2- 2 + 1 × 2-3 + 0 × 2 - 4 + 0 × 2-5 + 1 × 2-6 + 1 × 2-7 + 1 × 2- 8]
= 5 [0.996]
= 4.98V
Percentage
= 99.2%
Posted on Utopian.io - Rewarding Open Source Contributors
Your contribution cannot be approved because it does not follow the Utopian Rules.
The tutorial doesn’t seem to be well written. Also, many of the infos are available in the software help.
The codes are copy paste.
You can contact us on Discord.
[utopian-moderator]
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hey @manishmike10, I just gave you a tip for your hard work on moderation. Upvote this comment to support the utopian moderators and increase your future rewards!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit