- పదార్థం అవసరం:
- ADC0804 సింగిల్ ఛానల్ 8-బిట్ ADC మాడ్యూల్:
- సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ:
- రాస్ప్బెర్రీ పై ప్రోగ్రామింగ్:
- రాస్ప్బెర్రీ పై ఉపయోగించి LCD లో ఫ్లెక్స్ సెన్సార్ విలువను చూపుతోంది:
రాస్ప్బెర్రీ పై అనేది ఎలక్ట్రానిక్ ఇంజనీర్లు మరియు అభిరుచి గలవారి కోసం రూపొందించిన ARM ఆర్కిటెక్చర్ ప్రాసెసర్ ఆధారిత బోర్డు. PI ఇప్పుడు అక్కడ అత్యంత విశ్వసనీయ ప్రాజెక్ట్ డెవలప్మెంట్ ప్లాట్ఫామ్లలో ఒకటి. అధిక ప్రాసెసర్ వేగం మరియు 1 జిబి ర్యామ్తో, ఇమేజ్ ప్రాసెసింగ్ మరియు ఇంటర్నెట్ ఆఫ్ థింగ్స్ వంటి అనేక ఉన్నత ప్రాజెక్టులకు పిఐని ఉపయోగించవచ్చు. PI తో చేయగలిగే చాలా మంచి విషయాలు ఉన్నాయి, కానీ ఒక విచారకరమైన లక్షణం ఏమిటంటే దీనికి అంతర్నిర్మిత ADC మాడ్యూల్ లేదు.
మాత్రమే, రాస్ప్బెర్రీ పైని సెన్సార్లతో అనుసంధానించగలిగితే అది వాస్తవ ప్రపంచ పారామితుల గురించి తెలుసుకోవచ్చు మరియు దానితో సంకర్షణ చెందుతుంది. అక్కడ ఉన్న చాలా సెన్సార్లు అనలాగ్ సెన్సార్ మరియు అందువల్ల ఈ సెన్సార్లను ఇంటర్ఫేస్ చేయడానికి రాస్ప్బెర్రీ పైతో బాహ్య ADC మాడ్యూల్ IC ని ఉపయోగించడం నేర్చుకోవాలి. ఈ ప్రాజెక్ట్లో మనం రాస్ప్బెర్రీ పైతో ఫ్లెక్స్ సెన్సార్ను ఎలా ఇంటర్ఫేస్ చేయగలమో మరియు దాని విలువలను ఎల్సిడి స్క్రీన్లో ఎలా ప్రదర్శించాలో నేర్చుకుంటాము.
పదార్థం అవసరం:
- రాస్ప్బెర్రీ పై (ఏదైనా మోడల్)
- ADC0804 IC
- 16 * 2 ఎల్సిడి డిస్ప్లే
- ఫ్లెక్స్ సెన్సార్
- రెసిస్టర్లు మరియు కెపాసిటర్లు
- బ్రెడ్బోర్డ్ లేదా పెర్ఫ్ బోర్డు.
ADC0804 సింగిల్ ఛానల్ 8-బిట్ ADC మాడ్యూల్:
మేము ఇంకా ముందుకు వెళ్ళే ముందు, ఈ ADC0804 IC గురించి మరియు కోరిందకాయ పైతో దీన్ని ఎలా ఉపయోగించాలో తెలుసుకుందాం. ADC0804 అనేది ఒకే ఛానల్ 8-బిట్ IC, అంటే ఇది ఒకే ADC విలువను చదవగలదు మరియు దానిని 8-బిట్ డిజిటల్ డేటాకు మ్యాప్ చేయగలదు. ఈ 8-బిట్ డిజిటల్ డేటాను రాస్ప్బెర్రీ పై ద్వారా చదవవచ్చు, అందువల్ల 2 ^ 8 256 నుండి విలువ 0-255 అవుతుంది. దిగువ IC యొక్క పిన్అవుట్లలో చూపినట్లుగా, ఈ డిజిటల్ చదవడానికి DB0 నుండి DB7 పిన్స్ ఉపయోగించబడతాయి విలువలు.
ఇప్పుడు ఇక్కడ మరొక ముఖ్యమైన విషయం ఏమిటంటే, ADC0804 5V వద్ద పనిచేస్తుంది మరియు కనుక ఇది 5V లాజిక్ సిగ్నల్లో అవుట్పుట్ను అందిస్తుంది. 8 పిన్ అవుట్పుట్లో (8 బిట్లను సూచిస్తుంది), ప్రతి పిన్ తర్కం '1' ను సూచించడానికి + 5 వి అవుట్పుట్ను అందిస్తుంది. కాబట్టి సమస్య PI లాజిక్ + 3.3v, కాబట్టి మీరు PI యొక్క + 3.3V GPIO పిన్కు + 5V లాజిక్ ఇవ్వలేరు. మీరు PI యొక్క ఏదైనా GPIO పిన్కు + 5V ఇస్తే, బోర్డు దెబ్బతింటుంది.
కాబట్టి + 5 వి నుండి స్టెప్-డౌన్ లాజిక్ స్థాయికి, మేము వోల్టేజ్ డివైడర్ సర్క్యూట్ను ఉపయోగిస్తాము. వోల్టేజ్ డివైడర్ సర్క్యూట్ గురించి మరింత స్పష్టత కోసం మేము ఇంతకుముందు పరిశీలించాము. మనం చేయబోయేది ఏమిటంటే, + 5 వి తర్కాన్ని 2 * 2.5 వి లాజిక్లుగా విభజించడానికి మేము రెండు రెసిస్టర్లను ఉపయోగిస్తాము. కాబట్టి విభజన తరువాత మేము రాస్ప్బెర్రీ పైకి + 2.5 వి లాజిక్ ఇస్తాము. కాబట్టి, ADC0804 చేత లాజిక్ '1' ప్రదర్శించబడినప్పుడల్లా + 5V కి బదులుగా PI GPIO పిన్ వద్ద + 2.5V ని చూస్తాము. ADC గురించి ఇక్కడ మరింత తెలుసుకోండి: ADC0804 పరిచయం.
మేము పెర్ఫ్ బోర్డులో నిర్మించిన ADC0804 ను ఉపయోగించి ADC మాడ్యూల్ యొక్క చిత్రం క్రింద ఉంది:
సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ:
రాస్ప్బెర్రీ పైతో ఫ్లెక్స్ సెన్సార్ను ఇంటర్ఫేసింగ్ కోసం పూర్తి సర్క్యూట్ రేఖాచిత్రం క్రింద చూపబడింది. దాని వివరణ ఈ క్రింది విధంగా ఉంది.
ఈ కోరిందకాయ పై ఫ్లెక్స్ సెన్సార్ సర్క్యూట్ చాలా వైర్లతో కొంచెం క్లిష్టంగా అనిపించవచ్చు, కానీ మీరు నిశితంగా పరిశీలిస్తే చాలా వైర్లు నేరుగా LCD మరియు 8-బిట్ డేటా పిన్ నుండి రాస్ప్బెర్రీ పైకి అనుసంధానించబడి ఉంటాయి. కనెక్షన్లను తయారుచేసేటప్పుడు మరియు ధృవీకరించేటప్పుడు క్రింది పట్టిక మీకు సహాయం చేస్తుంది.
పిన్ పేరు |
రాస్ప్బెర్రీ పిన్ సంఖ్య |
రాస్ప్బెర్రీ పై GPIO పేరు |
LCD Vss |
పిన్ 4 |
గ్రౌండ్ |
LCD Vdd |
పిన్ 6 |
Vcc (+ 5V) |
ఎల్సిడి వీ |
పిన్ 4 |
గ్రౌండ్ |
ఎల్సిడి రూ |
పిన్ 38 |
GPIO 20 |
LCD RW |
పిన్ 39 |
గ్రౌండ్ |
ఎల్సిడి ఇ |
పిన్ 40 |
GPIO 21 |
ఎల్సిడి డి 4 |
పిన్ 3 |
GPIO 2 |
LCD D5 |
పిన్ 5 |
GPIO 3 |
ఎల్సిడి డి 6 |
పిన్ 7 |
GPIO 4 |
ఎల్సిడి డి 7 |
పిన్ 11 |
GPIO 17 |
ADC0804 Vcc |
పిన్ 2 |
Vcc (+ 5V) |
ADC0804 B0 |
పిన్ 19 (5.1 కె ద్వారా) |
GPIO 10 |
ADC0804 B1 |
పిన్ 21 (5.1 కె ద్వారా) |
GPIO 9 |
ADC0804 B2 |
పిన్ 23 (5.1 కె ద్వారా) |
GPIO 11 |
ADC0804 B3 |
పిన్ 29 (5.1 కె ద్వారా) |
GPIO 5 |
ADC0804 B4 |
పిన్ 31 (5.1 కె ద్వారా) |
GPIO 6 |
ADC0804 B5 |
పిన్ 33 (5.1 కె ద్వారా) |
GPIO 13 |
ADC0804 B6 |
పిన్ 35 (5.1 కె ద్వారా) |
GPIO 19 |
ADC0804 B7 |
పిన్ 37 (5.1 కె ద్వారా) |
GPIO 26 |
ADC0804 WR / INTR |
పిన్ 15 |
GPIO 22 |
అప్పటి నుండి రాస్ప్బెర్రీలో పిన్ సంఖ్యలను నిర్ణయించడానికి మీరు ఈ క్రింది చిత్రాన్ని ఉపయోగించవచ్చు.
అన్ని ADC మాడ్యూళ్ళ మాదిరిగానే, ADC0804 IC కి కూడా పనిచేయడానికి క్లాక్ సిగ్నల్ అవసరం, అదృష్టవశాత్తూ ఈ IC కి అంతర్గత గడియార మూలం ఉంది, కాబట్టి మేము RC సర్క్యూట్ను CLK లో మరియు CLK R పిన్లకు సర్క్యూట్లో చూపిన విధంగా జోడించాలి. మేము 10K మరియు 105pf విలువను ఉపయోగించాము, కాని 1uf, 0.1uf, 0.01uf వంటి ఏదైనా విలువను మనం ఉపయోగించవచ్చు.
అప్పుడు ఫ్లెక్స్ సెన్సార్ను కనెక్ట్ చేయడానికి మేము 100 కె రెసిస్టర్ను ఉపయోగించి సంభావ్య డివైడర్ సర్క్యూట్ను ఉపయోగించాము. ఫ్లెక్స్ సెన్సార్ వంగి ఉన్నందున దాని అంతటా ప్రతిఘటన మారుతుంది మరియు రెసిస్టర్ అంతటా సంభావ్య డ్రాప్ అవుతుంది. ఈ డ్రాప్ ADC0804 IC చేత కొలుస్తారు మరియు తదనుగుణంగా 8-బిట్ డేటా ఉత్పత్తి అవుతుంది.
ఫ్లెక్స్ సెన్సార్కు సంబంధించిన ఇతర ప్రాజెక్టులను తనిఖీ చేయండి:
- AVR మైక్రోకంట్రోలర్తో ఫ్లెక్స్ సెన్సార్ ఇంటర్ఫేసింగ్
- ఫ్లెక్స్ సెన్సార్ ఉపయోగించి ఆర్డునో ఆధారిత యాంగ్రీ బర్డ్ గేమ్ కంట్రోలర్
- ఫ్లెక్స్ సెన్సార్ ద్వారా సర్వో మోటార్ కంట్రోల్
- ఆర్డునో ఉపయోగించి వేళ్లను నొక్కడం ద్వారా టోన్లను ఉత్పత్తి చేస్తుంది
రాస్ప్బెర్రీ పై ప్రోగ్రామింగ్:
మేము కనెక్షన్లతో పూర్తి చేసిన తర్వాత, రాస్ప్బెర్రీ పైని ఉపయోగించి ఈ 8-బిట్ల స్థితిని చదివి వాటిని డెసిమల్ గా మార్చాలి, తద్వారా వాటిని ఉపయోగించుకోవచ్చు. ఎల్సిడి స్క్రీన్పై అదే విధంగా చేయడం మరియు ఫలిత విలువలను ప్రదర్శించే ప్రోగ్రామ్ ఈ పేజీ చివరిలో ఇవ్వబడుతుంది. కోడ్ క్రింద చిన్న జంక్లుగా వివరించబడింది.
పైతో ఎల్సిడిని ఇంటర్ఫేస్ చేయడానికి మాకు ఎల్సిడి లైబ్రరీ అవసరం. దీని కోసం మేము శుభం అభివృద్ధి చేసిన లైబ్రరీని ఉపయోగిస్తాము, ఇది 16 * 2 ఎల్సిడి డిస్ప్లేను పైతో నాలుగు వైర్ మోడ్లో ఇంటర్ఫేస్ చేయడానికి సహాయపడుతుంది. సమయం మరియు పై GPIO పిన్లను ఉపయోగించుకోవడానికి మాకు లైబ్రరీలు అవసరం.
గమనిక : lcd.py ఇక్కడ నుండి డౌన్లోడ్ చేసుకోవాలి మరియు ఈ ప్రోగ్రామ్ సేవ్ చేయబడిన అదే డైరెక్టరీలో ఉంచాలి. అప్పుడే కోడ్ కంపైల్ అవుతుంది.
దిగుమతి lcd # LCD లైబ్రరీని దిగుమతి చేసుకోండి [email protected] దిగుమతి సమయం # దిగుమతి సమయం దిగుమతి RPi.GPIO GPIO #GPIO గా GPIO గా మాత్రమే సూచించబడుతుంది
LCD పిన్ నిర్వచనాలు క్రింద చూపిన విధంగా వేరియబుల్స్ కేటాయిస్తారు. ఈ సంఖ్యలు GPIO పిన్ సంఖ్యలు మరియు అసలు పిన్ సంఖ్యలు కాదని గమనించండి. GPIO సంఖ్యలను పిన్ సంఖ్యలతో పోల్చడానికి మీరు పై పట్టికను ఉపయోగించవచ్చు. శ్రేణి బైనరీ అన్ని డేటా పిన్ సంఖ్యలను కలిగి ఉంటుంది మరియు శ్రేణి బిట్స్ అన్ని GPIO పిన్ల ఫలిత విలువను నిల్వ చేస్తుంది.
#LCD పిన్ నిర్వచనాలు D4 = 2 D5 = 3 D6 = 4 D7 = 17 RS = 20 EN = 21 బైనరీలు = (10,9,11,5,6,13,19,26) # పిన్ సంఖ్యల శ్రేణి DB0- కి కనెక్ట్ అవుతుంది DB7 బిట్స్ = 8-బిట్ డేటా యొక్క # విలువలు
ఇప్పుడు, మేము ఇన్పుట్ మరియు అవుట్పుట్ పిన్నులను నిర్వచించాలి. ఏడు డేటా పిన్లు ఇన్పుట్ పిన్ మరియు ట్రిగ్గర్ పిన్ (RST మరియు INTR) అవుట్పుట్ పిన్గా ఉంటాయి. డేటాషీట్ ప్రకారం ఒక నిర్దిష్ట సమయం కోసం అవుట్పుట్ పిన్ను అధికంగా ప్రేరేపించినట్లయితే మాత్రమే మేము ఇన్పుట్ పిన్ నుండి 8-బిట్ డేటా విలువలను చదవగలము. మేము binarys శ్రేణి లో బైనరీ పిన్స్ ప్రకటించకుండా నుండి మేము ఒక ఉపయోగించవచ్చు కోసం క్రింద చూపిన విధంగా డిక్లరేషన్ లూప్.
బైనరీలలో బైనరీ కోసం: GPIO.setup (బైనరీ, GPIO.IN) # అన్ని బైనరీ పిన్స్ ఇన్పుట్ పిన్స్ # ట్రిగ్గర్ పిన్ GPIO.setup (22, GPIO.OUT) #WR మరియు INTR పిన్స్ అవుట్పుట్
ఇప్పుడు ఎల్సిడి లైబ్రరీ ఆదేశాలను ఉపయోగించి మనం ఎల్సిడి మాడ్యూల్ను ప్రారంభించవచ్చు మరియు క్రింద చూపిన విధంగా చిన్న పరిచయ సందేశాన్ని ప్రదర్శించవచ్చు.
mylcd = lcd.lcd () mylcd.begin (D4, D5, D6, D7, RS, EN) #Intro Message mylcd.Print ("Flex Sensor with") mylcd.setCursor (2,1) mylcd.Print ("రాస్ప్బెర్రీ పై ") time.sleep (2) mylcd.clear ()
అనంతం ఇన్సైడ్ అయితే లూప్, మేము ద్వియాంశ విలువలను దశాంశ వాటిని మార్చేందుకు మరియు LCD ఫలితంగా అప్డేట్ చదవడం మొదలు. మేము ADC విలువలను చదవడానికి ముందు చెప్పినట్లుగా , ADC మార్పిడిని సక్రియం చేయడానికి ఒక నిర్దిష్ట సమయం కోసం ట్రిగ్గర్ పిన్ను ఎక్కువగా ఉండేలా చేయాలి. కింది పంక్తులను ఉపయోగించడం ద్వారా ఇది జరుగుతుంది.
GPIO.output (22, 1) # ట్రిగ్గర్ సమయం ఆన్ చేయండి. నిద్ర (0.1) GPIO.output (22, 0) # ట్రిగ్గర్ ఆఫ్ చేయండి
ఇప్పుడు, మేము 8-డేటా పిన్లను చదివి ఫలితాన్ని బిట్స్ శ్రేణిలో నవీకరించాలి. ఇది చేయుటకు మేము ప్రతి ఇన్పుట్ పిన్ను ట్రూ అండ్ ఫాల్స్తో పోల్చడానికి ఒక ఫర్ లూప్ ఉపయోగిస్తాము. నిజమైతే సంబంధిత బిట్స్ శ్రేణి 1 గా చేయబడుతుంది, అది 0 గా చేయబడుతుంది. ఇవన్నీ 8-బిట్ డేటా 0 మరియు 1 చదివిన విలువలకు సంబంధించినవి.
# ఇన్పుట్ పిన్లను చదవండి మరియు ఫలితాన్ని నేను పరిధిలో (8) బిట్ శ్రేణిలో నవీకరించండి: if (GPIO.input (బైనరీలు) == నిజం): బిట్స్ = 1 ఉంటే (GPIO.input (బైనరీలు) == తప్పు): బిట్స్ = 0
మేము బిట్స్ శ్రేణిని నవీకరించిన తర్వాత, మేము ఈ శ్రేణిని దశాంశ విలువకు మార్చాలి. ఇది దశాంశ మార్పిడికి బైనరీ తప్ప మరొకటి కాదు. 8-బిట్ బైనరీ డేటా కోసం 2 ^ 8 256. కాబట్టి మనం 0 నుండి 255 వరకు దశాంశ డేటాను పొందుతాము. పైథాన్లో ఆపరేటర్ “**” ఏదైనా విలువ యొక్క శక్తిని కనుగొనడానికి ఉపయోగించబడుతుంది. బిట్స్ MSB తో మొదలవుతాయి కాబట్టి మేము దానిని 2 ^ (7-స్థానం) తో గుణిస్తాము. ఈ విధంగా మనం అన్ని బైనరీ విలువలను దశాంశ డేటాగా మార్చవచ్చు మరియు దానిని LCD లో ప్రదర్శించవచ్చు
# పరిధిలో (8) కోసం బిట్ శ్రేణిని ఉపయోగించి దశాంశ విలువను లెక్కించండి: దశాంశ = దశాంశ + (బిట్స్ * (2 ** (7-i)))
మనకు దశాంశ విలువ తెలిస్తే వోల్టేజ్ విలువను లెక్కించడం సులభం. మేము దానిని 19.63 తో గుణించాలి. ఎందుకంటే 8-బిట్ 5VADC కోసం ప్రతి బిట్ 19.3 మిల్లీ వోల్ట్ యొక్క సారూప్యత. ఫలిత వోల్టేజ్ విలువ ADC0804 IC యొక్క పిన్స్ Vin + మరియు Vin- లలో కనిపించిన వోల్టేజ్ విలువ.
# వోల్టేజ్ విలువను లెక్కించండి వోల్టేజ్ = దశాంశ * 19.63 * 0.001 # ఒక్క యూనిట్ 19.3mV
వోల్టేజ్ విలువను ఉపయోగించి ఫ్లెక్స్ సెన్సార్ ఎలా వంగిందో మరియు ఏ దిశలో వంగిందో మనం నిర్ణయించవచ్చు. ఈ క్రింది పంక్తులలో నేను రీడ్ వోల్టేజ్ విలువలను ఎల్సిడి తెరపై ఫ్లెక్స్ సెన్సార్ యొక్క స్థానాన్ని సూచించడానికి వోల్టేజ్ యొక్క ముందుగా నిర్ణయించిన విలువలతో పోల్చాను.
# వోల్టేజ్ మరియు సెన్సార్ యొక్క ప్రదర్శన స్థితిని పోల్చండి mylcd.setCursor (1,1) if (వోల్టేజ్> 3.8): mylcd.Print ("బెంట్ ఫార్వర్డ్") ఎలిఫ్ (వోల్టేజ్ <3.5): mylcd.Print ("వెనుకకు బెంట్") వేరే: mylcd.Print ("స్థిరమైన")
అదేవిధంగా మీరు రాస్ప్బెర్రీ పై చేయాలనుకునే ఏదైనా పనిని నిర్వహించడానికి వోల్టేజ్ విలువను ఉపయోగించవచ్చు.
రాస్ప్బెర్రీ పై ఉపయోగించి LCD లో ఫ్లెక్స్ సెన్సార్ విలువను చూపుతోంది:
ప్రాజెక్ట్ యొక్క పని చాలా సులభం. కానీ మీరు lcd.py హెడర్ ఫైల్ను డౌన్లోడ్ చేశారని మరియు మీ ప్రస్తుత ప్రోగ్రామ్ ఉన్న అదే డైరెక్టరీలో ఉంచారని నిర్ధారించుకోండి. అప్పుడు బ్రెడ్బోర్డ్ లేదా పెర్ఫ్ బోర్డ్ను ఉపయోగించి సర్క్యూట్ రేఖాచిత్రంలో కనెక్షన్లను చూపించి, పై ప్రోగ్రామ్ను మీ పైలో అమలు చేయండి మరియు మీరు పనిని పొందాలి. మీరు సెటప్ చేయడం ఈ క్రింది విధంగా ఉండాలి.
చూపిన విధంగా LCD దశాంశ విలువ, వోల్టేజ్ విలువ మరియు సెన్సార్ స్థానాన్ని ప్రదర్శిస్తుంది. సెన్సార్ను ముందుకు లేదా వెనుకకు వంచండి మరియు మీరు వోల్టేజ్ మరియు దశాంశ విలువ వైవిధ్యంగా ఉండడాన్ని చూడగలుగుతారు, స్థితి వచనం కూడా ప్రదర్శించబడుతుంది. మీరు ఏదైనా సెన్సార్ను కనెక్ట్ చేయవచ్చు మరియు వోల్టేజ్ అంతటా మారుతూ ఉంటుంది.
ట్యుటోరియల్ యొక్క పూర్తి పనిని క్రింద ఇచ్చిన వీడియోలో చూడవచ్చు. మీరు ప్రాజెక్ట్ను అర్థం చేసుకున్నారని మరియు ఇలాంటిదే నిర్మించడాన్ని ఆస్వాదించారని ఆశిస్తున్నాము. మీకు ఏమైనా సందేహం ఉంటే, వాటిని వ్యాఖ్య విభాగంలో లేదా ఫోరమ్లలో ఉంచండి మరియు వాటికి సమాధానం ఇవ్వడానికి నేను నా వంతు ప్రయత్నం చేస్తాను.