Სარჩევი:
- ნაბიჯი 1: წრიული დიაგრამა
- ნაბიჯი 2: ნაწილების სია
- ნაბიჯი 3: თეორია
- ნაბიჯი 4: პროგრამული უზრუნველყოფა
ვიდეო: მარტივი მბრუნავი დეკოდერი: 4 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
ეს ინსტრუქცია აღწერს რიგითი მბრუნავი კოდირების დეკოდირების მარტივ მეთოდს Arduino Uno R3 გამოყენებით.
კომპაქტური პროგრამული უზრუნველყოფის რუტინები გამოიყენება გადასვლის რაოდენობის დასათვლელად, კონტაქტური გადახრის აღმოსაფხვრელად და ბრუნვის მიმართულების დასადგენად. დამატებითი კომპონენტები და საძიებელი ცხრილები არ არის საჭირო.
მოწოდებულია კოდის შეწყვეტილი და შეუფერხებელი ვერსიები.
კოდის შეწყვეტის ვერსია მოითხოვს მხოლოდ ერთ შეწყვეტის პინს.
სურათები:
- გახსნის ფოტო გვიჩვენებს აწყობილი კოდირებას.
- ეკრანის კადრი აჩვენებს შეწყვეტის ვერსიის კოდს და ითვლის, როდესაც კოდირების ლილვი ბრუნავს საათის ისრის მიმართულებით და საათის ისრის საწინააღმდეგოდ.
- ვიდეო გვიჩვენებს რაოდენობას სწრაფი ბრუნვის დროს.
ნაბიჯი 1: წრიული დიაგრამა
კოდირების გაყვანილობის დიაგრამა ნაჩვენებია ნახ.1 -ში.
ჯუმბერის მავთულები მიმაგრებულია პირდაპირ კოდირების ქინძისთავებზე.
შეცვალეთ ორი ცისფერი მავთული, თუ დათვლის მიმართულება შეიცვალა.
ნაბიჯი 2: ნაწილების სია
შემდეგი ნაწილები მოპოვებულია
- მხოლოდ 1 Arduino UNO R3 USB კაბელით.
- მხოლოდ 1 თანმიმდევრული მბრუნავი კოდირება (EC11 ან ექვივალენტი) გადამრთველით.
- 1 ღილაკი, რომელიც შესაფერისია ლილვისთვის.
- 3 მხოლოდ Arduino მამაკაცი-მამაკაცი მხტუნავი მავთული.
ნაბიჯი 3: თეორია
თანმიმდევრული მბრუნავი კოდირება წარმოქმნის ორ კვადრატულ ტალღას, რომელთაგან თითოეული გადაადგილებულია 90 გრადუსით, როგორც ეს ნაჩვენებია ნახ. 1-ში.
კონტაქტი A და B კონტაქტების ლოგიკური ნიმუშები განსხვავებულია, როდესაც ლილვი ბრუნავს საათის ისრის მიმართულებით (CW) და საათის ისრის საწინააღმდეგოდ (CCW) 1 -დან 6 პოზიციამდე.
ბრუნვის მიმართულების განსაზღვრის საერთო მეთოდები მოიცავს:
- ტექნიკა
- ტყუპი წყვეტს
- ნიმუშების საძიებელი ცხრილები
ეს პროექტი იყენებს პროგრამულ მეთოდს, რომელიც არ საჭიროებს საძიებო ცხრილებს. [1]
მიმართულება
იმის ნაცვლად, რომ შევხედოთ A და B კონტაქტებიდან გამომავალ შაბლონებს, ყურადღება გავამახვილოთ კონტაქტზე A.
თუ ჩვენ ვიღებთ კონტაქტს B კონტაქტის ყოველი გადასვლის შემდეგ, ჩვენ აღვნიშნავთ, რომ:
- კონტაქტს A და B აქვს საპირისპირო ლოგიკური მდგომარეობა, როდესაც კოდირება ბრუნავს CW
- კონტაქტს A და კონტაქტს B აქვს ერთი და იგივე ლოგიკური მდგომარეობა, როდესაც კოდირება ბრუნავს CCW
ფაქტობრივი კოდი:
// ----- ითვლი გადასვლებს
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); თუ (CurrentStateA == CurrentStateB) რაოდენობა ++; თუ (CurrentStateA! = CurrentStateB) რაოდენობა--; LastStateA = CurrentStateA; }
ეს მეთოდი გთავაზობთ შემდეგ უპირატესობებს:
- საძიებელი მაგიდები არ არის საჭირო
- საჭიროა მხოლოდ ერთი შეწყვეტის ხაზი
დებიუცია
ყველა მექანიკური კოდირება განიცდის "კონტაქტური გადახტომა".
თუ გადართვის კონტაქტი არ ხდება/სუფთად იშლება, მისი ლოგიკური მდგომარეობა სწრაფად იცვლება მაღალიდან დაბალამდე, სანამ გადამრთველის კონტაქტი არ მოგვარდება. ეს იწვევს ცრუ დათვლას.
კონტაქტური გადახრის ჩახშობის ერთ -ერთი მეთოდია თითოეული გადართვის კონტაქტზე მცირე კონდენსატორის დამატება. კონდენსატორი და მასთან დაკავშირებული გამწევ რეზისტორი ქმნიან ინტეგრატორს, რომელიც ეფექტურად ამცირებს მაღალ სიხშირეებს და იძლევა გადართვის ძაბვის მოხდენას/დაცემას.
ამ მიდგომის მინუსი ის არის, რომ გადასვლები შეიძლება გამოტოვდეს, თუ კოდირების ლილვი სწრაფად ბრუნავს.
პროგრამული უზრუნველყოფის დებონუსი
ეს მეთოდი იყენებს ორ მრიცხველს (ღია, დახურული), რომლებიც ნულოვანია. [2]
მას შემდეგ რაც გამოვლინდება გადასვლა კონტაქტზე A:
- განუწყვეტლივ გამოკითხვა კონტაქტი A.
- გაზარდეთ ღია მრიცხველი და გადატვირთეთ დახურული მრიცხველი, როდესაც კონტაქტი A არის მაღალი.
- გაზარდეთ დახურული მრიცხველი და გადატვირთეთ ღია მრიცხველი, როდესაც კონტაქტი A არის დაბალი.
- გამოდით მარყუჟიდან, როდესაც ერთი მრიცხველი მიაღწევს წინასწარ განსაზღვრულ რიცხვს. ჩვენ ეფექტურად ვეძებთ სტაბილური მდგომარეობის პერიოდს ნებისმიერი კონტაქტური გადახრის შემდეგ.
ფაქტობრივი კოდი:
// ----- დებიუნით კონტაქტი A
while (1) {if (digitalRead (ContactA)) {// ----- ContactA ღიაა დახურულია = 0; // ცარიელი საპირისპირო ინტეგრატორი Open ++; // ინტეგრირება if (Open> MaxCount) return HIGH; } else {// ----- ContactA დახურულია ღია = 0; // ცარიელი საპირისპირო ინტეგრატორი დახურულია ++; // ინტეგრაცია if (დახურული> MaxCount) დაბრუნება LOW; }}
არ არის საჭირო კონტაქტის B დენონსირება, რადგან კონტაქტები A და კონტაქტები B არ ემთხვევა.
ითვლიან
მექანიკური "დამამცირებელი" ეფექტურად აორმაგებს თქვენს რაოდენობას, რადგან ორი რაოდენობა რეგისტრირებულია დაწკაპუნებებს შორის (იხ. სურათი 1).
"დაკავებულთა" რაოდენობა შეიძლება განისაზღვროს modulo 2 არითმეტიკით, როგორც ნაჩვენებია ქვემოთ.
ფაქტობრივი კოდი:
// ----- ითვლი "დაკავებულებს"
if (რაოდენობა % 2 == 0) {Serial.print ("დათვლა:"); Serial.println (რაოდენობა / 2); }
ცნობები
დამატებითი ინფორმაცია შეგიძლიათ იხილოთ აქ:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
ნაბიჯი 4: პროგრამული უზრუნველყოფა
ეს პროექტი მოითხოვს Ardino Uno R3 IDE (ინტეგრირებული განვითარების გარემოს) უახლეს ვერსიას, რომელიც ხელმისაწვდომია
ჩამოტვირთეთ Arduino– ს შემდეგი ორი ესკიზიდან თითოეული (მიმაგრებულია)
- rotary_encoder_1.ino (გამოკითხვის ვერსია)
- rotary_encoder_2.no (შეწყვეტის ვერსია)
ორჯერ დააწკაპუნეთ თქვენთვის სასურველ ვერსიაზე და მიჰყევით ეკრანზე მითითებებს.
ისიამოვნეთ…
დააწკაპუნეთ აქ, რომ ნახოთ ჩემი სხვა ინსტრუქციები.
გირჩევთ:
COVID-19 დაფა (მარტივი და მარტივი): 4 ნაბიჯი
COVID-19 დაფა (მარტივი და მარტივი): ყველგან არის ახალი COVID-19 ვირუსის უზარმაზარი აფეთქება. საჭირო გახდა ქვეყანაში COVID-19– ის მიმდინარე სცენარის დაკვირვება. ასე რომ, სახლში ყოფნისას, ეს იყო პროექტი, რომელზეც ვფიქრობდი: " ინფორმაციის საინფორმაციო დაფა " - და
როგორ დავპროგრამოთ IR დეკოდერი მრავალსიჩქარიანი AC ძრავის კონტროლისათვის: 7 ნაბიჯი
როგორ დავპროგრამოთ IR დეკოდერი მრავალსიჩქარიანი AC ძრავის კონტროლისათვის: ერთფაზიანი ალტერნატიული დენის ძრავები, როგორც წესი, გვხვდება საყოფაცხოვრებო ნივთებში, როგორიცაა გულშემატკივარი და მათი სიჩქარე ადვილად კონტროლდება რიგი დისკრეტული გრაგნილების დაყენებული სიჩქარისთვის. ამ ინსტრუქციებში ჩვენ ვაშენებთ ციფრულ კონტროლერს, რომელიც
IR დისტანციური მართვის დეკოდერი Arduino– ს გამოყენებით: 7 ნაბიჯი
IR დისტანციური მართვის დეკოდირებელი Arduino– ს გამოყენებით: გამარჯობათ შემქმნელებო, ეს არის სრული ინსტრუქცია, თუ როგორ უნდა გაიშიფროთ ნებისმიერი IR დისტანციური მართვა. უბრალოდ მიყევით ჩემს ქვემოთ მოცემულ ნაბიჯებს
მარტივი და მარტივი Spider-Man ვებ-მსროლელი: 12 ნაბიჯი
მარტივი და მარტივი Spider-Man ვებ-მსროლელი: გინახავთ ადამიანი ობობას? ობობას კომიქსების წიგნი? რაიმე ბუნდოვნად ობობასთან არის დაკავშირებული? ობობა ერთი შეხედვით ყველგან არის. რატომ არ აკეთებთ უბრალო ვებ-მსროლელს? ცოტაოდენი პრაქტიკის შემდეგ, მე შევქმენი დიზაინი სახლის მასალისგან, რომელიც შეიძლება შეიქმნას
კომპაქტური შუქის შესაქმნელად ყველაზე მარტივი გზა !! 3 მარტივი ნაბიჯი !!: 3 ნაბიჯი
კომპაქტური შუქის შესაქმნელად ყველაზე მარტივი გზა !! 3 მარტივი ნაბიჯი !!: რა დაგჭირდებათ - თუნუქის ფოლგა 1 AA ბატარეა (ზოგიერთი AAA ბატარეა იმუშავებს) 1 მინი ნათურა (ნათურები გამოიყენება ფანრების უმეტესობისთვის; იხილეთ სურათი) მმართველი (საჭიროების შემთხვევაში)