Სარჩევი:
- ნაბიჯი 1: ნაწილების სია
- ნაბიჯი 2: აშკარა გამოსავალი
- ნაბიჯი 3: კასკადური ქრონომეტრები უმაღლესი რეზოლუციისთვის
ვიდეო: მაღალი რეზოლუციის PWM სიგნალის გენერაცია RC სერვისებისთვის STM32 მოწყობილობებით: 3 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
ამჟამად, მე ვაშენებ RC გადამცემს/მიმღებს SX1280 RF ჩიპის საფუძველზე. პროექტის ერთ -ერთი მიზანი ის არის, რომ მე მინდა 12 ბიტიანი სერვო რეზოლუცია ჩხირებიდან ყველა სერვისამდე. ნაწილობრივ იმიტომ, რომ თანამედროვე ციფრულ სერვისს აქვს 12 ბიტიანი გარჩევადობა, მეორე მხრივ, მაღალი დონის გადამცემი მაინც იყენებს 12 ბიტს. მე ვიკვლევდი როგორ შემიძლია გენერირება მაღალი რეზოლუციის PWM სიგნალების STM32 მოწყობილობებზე. პროტოტიპისთვის ამ მომენტში ვიყენებ შავ აბებს (STM32F103C8T8).
ნაბიჯი 1: ნაწილების სია
ტექნიკა
- ნებისმიერი განვითარების დაფა STM32F103 (ლურჯი აბი, შავი აბი და ა.
- USB დენის ბანკი, როგორც კვების წყარო
- STM32 პროგრამისტი (Segger j-links, ST-LINK/V2, ან უბრალოდ st-link კლონი)
პროგრამული უზრუნველყოფა
- STM32CubeMX
- Atollic TrueSTUDIO STM32– ისთვის
- პროექტის წყარო github– დან
ნაბიჯი 2: აშკარა გამოსავალი
ალბათ ყველაზე მარტივი გამოსავალია გამოიყენოთ ერთ – ერთი ტაიმერი, რომელსაც შეუძლია PWM სიგნალების გენერირება, მაგალითად TIM1-3 STM32F103– ზე. თანამედროვე ციფრული servo– სთვის ჩარჩოს სიჩქარე შეიძლება შემცირდეს 5 ms– მდე, მაგრამ ძველი ანალოგის servo– სთვის ეს უნდა იყოს 20 ms ან 50 Hz. ასე რომ, როგორც ყველაზე უარესი სცენარი, მოდით შევქმნათ ეს. 72 MHz საათის და 16 ბიტიანი ტაიმერის მრიცხველის გარჩევადობით, ჩვენ უნდა დავაყენოთ ტაიმერის წინასწარგამრიცხველი მინიმუმ 23 -ზე, რომ დაფაროს 20 ms კადრის სიხშირე. მე ავირჩიე 24, რადგან შემდეგ 20 ms უნდა მრიცხველი ზუსტად 60000 -ზე დავაყენო. თქვენ შეგიძლიათ ნახოთ CubeMX კონფიგურაცია და გენერირებული 1 და 1.5 ms PWM სიგნალები ეკრანის სურათებში. სამწუხაროდ, 1 ms– ისთვის ტაიმერის მრიცხველი უნდა იყოს 3000, რაც მოგვცემს მხოლოდ 11 ბიტიან გარჩევადობას. ცუდი არ არის, მაგრამ მიზანი 12 ბიტიანი იყო, მოდით სხვა რამ ვცადოთ.
რა თქმა უნდა, თუ მე ვირჩევდი მიკრო კონტროლერს 32 ბიტიანი ტაიმერის მრიცხველით, STM32L476– ის მსგავსად, ეს რეზოლუცია შეიძლება იყოს ბევრად უფრო მაღალი და პრობლემა მოგვარდება.
მაგრამ აქ, მე მსურს შემოგთავაზოთ ალტერნატიული გადაწყვეტა, რომელიც კიდევ უფრო გაზრდის რეზოლუციას თუნდაც STM32F103- ზე.
ნაბიჯი 3: კასკადური ქრონომეტრები უმაღლესი რეზოლუციისთვის
წინა პრობლემის გადაჭრის მთავარი პრობლემა ის არის, რომ კადრების სიხშირე (20 ms) შედარებით მაღალია რეალურად წარმოქმნილ PWM სიგნალთან შედარებით (1 -დან 2 ms- მდე), ამიტომ ჩვენ ვკარგავთ ზოგიერთ ღირებულებულ ბიტს დარჩენილი 18 ms- ისთვის, როდესაც ჩვენ ველოდებით შემდეგი ჩარჩო. ამის მოგვარება შესაძლებელია ტაიმერების კასკადური გამოყენებით ტაიმერის ბმულის ფუნქციის სინქრონიზაციისათვის.
იდეა იმაში მდგომარეობს, რომ მე გამოვიყენებ TIM1- ს, როგორც სამაგისტრო კადრების სიხშირის (20 ms) და TIM2, TIM3 რომ გავუმკლავდე PWM სიგნალებს, როგორც მონები. როდესაც ოსტატი იწვევს მონაებს, ისინი წარმოქმნიან მხოლოდ PWM სიგნალს ერთ პულსის რეჟიმში. ამრიგად, მე მჭირდება მხოლოდ 2 ms ამ ტაიმერებში. საბედნიეროდ, თქვენ შეგიძლიათ კასკადი გაუკეთოთ ამ ქრონომეტრებს ტექნიკაში, ასე რომ ამ სინქრონიზაციას პროცესორის ჩარევა არ სჭირდება და ისიც ძალიან ზუსტია, jitter არის ps რეგიონში. თქვენ შეგიძლიათ ნახოთ CubeMX დაყენება ეკრანის ანაბეჭდებზე.
როგორც ხედავთ, მე შევარჩიე 3 როგორც პრესკალარი, ასე რომ, 2 ms– ისთვის მე უნდა დავაყენო 48000 ტაიმერის მრიცხველში. ეს გვაძლევს 24000 1 ms– ზე, რაც უფრო მეტია რაც ჩვენ გვჭირდება 14 ბიტიანი გარჩევადობისთვის. ტადაააა…
გთხოვთ გადახედოთ oscilloscope ეკრანის ანაბეჭდს შესავალში საბოლოო შედეგისთვის. არხი 3 (მეწამული) არის მთავარი ტაიმერის შეწყვეტა, რაც გამოიწვევს ხსნარებს ერთი პულსის გამომუშავებისათვის. არხი 1 და 4 (ყვითელი და მწვანე სხივი) არის PWM სიგნალები, რომლებიც წარმოიქმნება სხვადასხვა ქრონომეტრების მიერ. გაითვალისწინეთ, რომ ისინი სინქრონიზებულია, მაგრამ ისინი სინქრონიზებულია უკანა კიდეებზე, ეს არის PWM რეჟიმის 2. გამო. ეს არ არის პრობლემა, რადგან კონკრეტული სერვისის PWM მაჩვენებელი ჯერ კიდევ სწორია.
ამ გადაწყვეტილების სხვა სარგებელი ის არის, რომ კადრების სიხშირის შეცვლა ნიშნავს მხოლოდ TIM1 პერიოდის პერიოდის შეცვლას. თანამედროვე ციფრული სერვისებისთვის შეგიძლიათ დაიწიოთ თუნდაც 200-300 ჰერცამდე, მაგრამ გთხოვთ გაეცნოთ სერვოს სახელმძღვანელოს, თუ გსურთ სრულყოფილი მორგება.
გირჩევთ:
ESP32 TTGO WiFi სიგნალის სიძლიერე: 8 ნაბიჯი (სურათებით)
ESP32 TTGO WiFi სიგნალის სიძლიერე: ამ გაკვეთილში ჩვენ ვისწავლით თუ როგორ უნდა გამოვხატოთ WiFi ქსელის სიგნალის სიძლიერე ESP32 TTGO დაფის გამოყენებით. უყურეთ ვიდეოს
მაღალი რეზოლუციის სიხშირის მრიცხველი: 5 ნაბიჯი (სურათებით)
მაღალი რეზოლუციის სიხშირის მრიცხველი: ეს ინსტრუქცია აჩვენებს საპასუხო სიხშირის მრიცხველს, რომელსაც შეუძლია გაზომოთ სიხშირეები სწრაფად და გონივრული სიზუსტით. ის დამზადებულია სტანდარტული კომპონენტებით და შეიძლება გაკეთდეს შაბათ-კვირას (ცოტა მეტი დამჭირდა :-)) რედაქტირება: კოდი ახლა ხელმისაწვდომია
მაღალი რეზოლუციის ვებკამერა: 9 ნაბიჯი (სურათებით)
მაღალი რეზოლუციის ვებკამერა: რამდენიმე წლის განმავლობაში ვიყენებდი RPi დაფუძნებულ ვებკამერას (PiCam მოდულთან ერთად). წარმოებული სურათები იყო ყველა უფლება, მაგრამ შემდეგ, იყო მომენტი, როდესაც მე აღარ ვარ კმაყოფილი ხარისხით. მე გადავწყვიტე მაღალი რეზოლუციის ვებკამერის გაკეთება. შემდეგი ნაწილები
გამოიყენეთ პალმის ინფრაწითელი კლავიატურა Android მოწყობილობებით: 5 ნაბიჯი
გამოიყენეთ პალმის ინფრაწითელი კლავიატურა Android მოწყობილობებით: მე მქონდა PalmOne უკაბელო კლავიატურა და მინდოდა მქონოდა Bluetooth კლავიატურა ჩემი ტელეფონისთვის. ერთადერთი პრობლემა ის იყო, რომ PalmOne კლავიატურა იყო ინფრაწითელ დაფუძნებულზე. მე ასევე მქონდა Brainlink მოწყობილობა. ეს საკმაოდ მიმზიდველი პატარა მოწყობილობაა მედიატორისთვის
როგორ მივიღოთ მაღალი რეზოლუციის სურათები ინსტრუქციიდან: 4 ნაბიჯი
როგორ მივიღოთ მაღალი რეზოლუციის სურათები ინსტრუქციიდან: ნამდვილად მოგეწონათ ეს სასწავლო სურათი და გინდათ მისი მაღალი გარჩევადობის ასლის შენახვა? ეს დიდი პატარა თვისება ადვილად შეუმჩნეველი რჩება