stm32f103c8 TIMER 2 ,3, 4 sorunum

Başlatan z, 17 Eylül 2022, 01:13:25

elektronik

Siz ikiniz birbirinize takılmadan duramıyorsunuz. çokda şeetmeye gerek yok ortada bişey yok.
Nusret işiniz ne oldu ondan haber verin çamura yatmayın :D

Yuunus

@z slave mode senin isini zaten gormezmis, adamlar ornegin timer1 in durumlari icin event urettiriyor sonrada bu event'i timer2 ye ITR0 ile triger source olarak atama yaptiriyor, bu eventlerin registerine deger yazip mudahale ederek sen manuel olarak timer2 tetikletebilirmisin ona bakmadim lakin o kadar ugrasacagina senin yaptigin gibi timer aktif etmek en mantiklisi, ama sunuda belirteyim su anda sen islemciyi tasarlanan durumularin disina zorlayarak islem yaptiriyorsun, cunki adamlar boyle birseye mudahale etmeye senin istedigin sekilde izin vermemisler, zorluyorsun yani, ama helal olsun hakkinida vermek lazim.

z

@JOKERAS

Soylediklerin dogruysa ben ne pislik bir adammisim ya.

Amel oluyum insallah.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

devrecii

@z Amel olıyım ne demek ölüm de kurtulun anlamında mı ?  ,  googleda aradım "herşey olayım derken hiçbirşey olamadı" diye çıktı,   lan bu beni anlatıyor diye üzüldüm şahsen  :'( 

@JOKERAS fazla alıngan şu lafları yese acaba hali ne olurdu?   :D

Alıntı yapılan: bulut_01 - 22 Eylül 2022, 22:34:03bu işleri bilmiyosan git gazate oku seni aşan işlerle kafanı yorma!
Alıntı yapılan: bulut_01 - 22 Eylül 2022, 22:37:58benim kafa normalde sende kafa yok sordugun sorulardan  :D
Alıntı yapılan: devrecii - 23 Eylül 2022, 15:07:47artis ne arar la bazarda.

z

#94
Amel olmak circir olmakla esanlamli.

Birine cemkirince karsidakinin de cemkirmesi cok normal.

Cemkirene cemkirince kotu adam ben oluyorum. Ustten bakan egolu ben oluyorum. (Ne de olsa cig sutu sadece ben emdim)

Alistim artik.

@JOKERAS

Bu basliktaki sorun ilginc bir durum idi (timerlarin senkronize calismasi). Nihayetinde sebebini debelene debelene bulduk.
Faz farki olusturmak icin ilk iki mesajda olasi yontemleri yazdim zaten. Bu sorunu cozmenin uzay gemisi yapmakla atom parcalamakla es bir yani yok.

Fakat sorunun cok basit bir register atamasi yapmamaktan kaynaklandigi alinacak ders oldu. Sen istedigin kadar bu yontemin ise yaramayacagini soylesen de
dedigin gibi ilk okul cocuguna bile sorsan soyler timerlari gecikmeli kur diye. Gecikmeli kurarsan oluyor iste.

Bu fazfarkli yapiya ihtiyacimin mantigini dedigim gibi burada yazarak anlatmak zor. Bir firsatim olursa videoda tahta basinda anlatacagim.

Ama kisa bir giris yapayim.

Eger 6 ayri bobinin akimini tek tek kontrol altinda tutacaksaniz akim bilgilerinii cok iyi elde etmelisiniz.

2 ADC var 8 tane de ADC kanalim var. Sorun yok derseniz sorun var tabiki. Akimi, akim kontrol dongunuz icin ayrilan zaman icinde olcebilmeli, gerekli kontrol algoritmalarini isletebilmeli ve nihayetinde o kanala ait pwm degerini zamanindan once pwm registerine yuklemeniz gerekir.

Merkeze gore simetrik pwm ile 6 bobine de merkezleri bir birine senkron pwm voltajlar verirseniz 6 bobinin 6 si da tam merkezde ortalama akimi akitir.

Yani pwm high oldugu anda akim rampa seklinde artarken pwm in tam ortasinda akim yapacagi delta I artisinin yarisini yapar.
Eee 6 akim da tam bu anda delta I artisinin yarisini yapacaksa 6 akimi da tam bu anda olcmek gerekir ki akimdaki rampa egimi olcum hatasina neden olmasin.

Eger her bir ADC kanalimiz kendi sample hold devresine sahip olsaydi  tam orta noktada 6 bobin akiminin o anki degerini analog olarak saklar ardindan ADC ile tek tek olcerdik. Hata da yapmazdik.

Fakat malesef STM32 dahil tum islemcilerde ADC ADC kanallarini ardisil olarak olcerler.

F103C8 her bir ADC olcumunu 1uS de yapar. Fakat Islemci USB donanimini da kullanacaksa malesef ADC yi en yuksek hizda calistiramiyoruz. 72Mhz de hem USB calissin hem de ADC max hizda calissin olmuyor.

Neyse sebebini merak eden PLL sayfasina bakar.

O zaman oyle bir uc kagit yapmaliyiz ki PWM lerin orta noktalari ust uste gelmesin. Eger orta noktalar ust uste gelmezse ADC yi soft olarak baslatabilir ya da surekli cevrim modunda birakabiliriz,

Timer 2 orta noktada int cakar 2 ADC ile o anki  iki bobin akimini olcer kontrol algolari isletir ve pwm degerlerini  yukleriz. ADC kanallarini switch ederiz ve ikinci motor akimlari olculmeye baslanir. Birazdan Timer 3 orta nokta yapar.  Bu kez ikinci motor icin o anki akim degerleri elimizde mevcut olur.

Birazdan diger timer int cakar bu kez de 3. motorun o anki akimlarini olceriz.

Yani interlive ya da pipeline diyebilecegimiz bir donanim yapisi kurmus oluruz.

Eger boyle yapmazsak tam merkezde 6 bobin akimini olcmeye kalkarsak 3 tanesi bir ADC ile 3 tanesi de diger ADC ile olculse 3. motorun akimi 3uS den daha fazla gecikme ile olculur.

Halbuki 3uS sonra akim orta noktadan 3us uzaklasmis ve akim rampasinin egiminin neden oldugu hata ile akim olculmus olur.

3us dedigim gibi en iyimser degerdir. ADC yi full speed kullanamadigimiz icin daha da buyuk olcum suresi alacaktir. 

Toplam pwm periyodunun  en iyimser durumda 62us oldugu dusunulurse 5us gecikme 3. motorda  %8 gecikme anlamina gelir.
Tum kdolamalar bitipte hala islemcinin idle durumda kaldigi zaman kaliyorsa 62us lik peryod H bridge in max frekansinkarsilik gelen peryoda kadar kisaltilir ve bu  bazen 20us ye kadar dusurulebilir. Yani 20us lik dongude 6 motor akimi denetimde tutulur, PC ile haberlesilir, vs vs

Eger motor enduktansiniz dusuk ise atik davranis sergilemek icin H kopru voltajini da buyuk tuttuysak akimdaki rampanin egimi buyuk olur. Bu da akimlarin olcumunde daha buyuk olcum hatasi yapmamiza neden olur.

O halde en az hatayi 1. motor, biraz fazla hatayi 2. motor, en buyuk akim hatasini da 3. motor yapacak demektir.

Eger pwm uretiminde motor kontrol duzenegimizde CPU daki pipeline mekanizmasinin benzerini pwm uretimi ve ADC olcumu icin bahsettigim sekilde yaparsak bu hatalardan buyuk olcude kurtuluruz.

Bahsettigim hatalara ragmen STM ile 3 step motor kontrol edilebiliyor ve isimi fazlasiyla goruyor.

Buna ragmen olusturdugum bu pipeline yapisi ile step motorlari bir segment daha iyi surmeyi hedefliyorum.

Simdi yazacaklarim gene ASM C catismasina donecektir ama tum kodlamayi ASM ile yapmak zorundayiz. Kutuphane vs ile hic olmaz.

Cunku  kuracagimiz pipeline mekanzimasina asla kaza yaptirmamaliyiz. (pipeline crash, pipe line penalty)

Bunun ustesinden de ancak ya FPGA gelebilir ya da pure assembly.

Haa siki C yazarlar da isterlerse yazmayi basarabilirler.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

benmrtild

Alıntı yapılan: z - 24 Eylül 2022, 00:04:08Amel olmak circir olmakla esanlamli.

Birine cemkirince karsidakinin de cemkirmesi cok normal.

Cemkirene cemkirince kotu adam ben oluyorum. Ustten bakan egolu ben oluyorum. (Ne de olsa cig sutu sadece ben emdim)

Alistim artik.

@JOKERAS

Bu basliktaki sorun ilginc bir durum idi (timerlarin senkronize calismasi). Nihayetinde sebebini debelene debelene bulduk.
Faz farki olusturmak icin ilk iki mesajda olasi yontemleri yazdim zaten. Bu sorunu cozmenin uzay gemisi yapmakla atom parcalamakla es bir yani yok.

Fakat sorunun cok basit bir register atamasi yapmamaktan kaynaklandigi alinacak ders oldu. Sen istedigin kadar bu yontemin ise yaramayacagini soylesen de
dedigin gibi ilk okul cocuguna bile sorsan soyler timerlari gecikmeli kur diye. Gecikmeli kurarsan oluyor iste.

Bu fazfarkli yapiya ihtiyacimin mantigini dedigim gibi burada yazarak anlatmak zor. Bir firsatim olursa videoda tahta basinda anlatacagim.

Ama kisa bir giris yapayim.

Eger 6 ayri bobinin akimini tek tek kontrol altinda tutacaksaniz akim bilgilerinii cok iyi elde etmelisiniz.

2 ADC var 8 tane de ADC kanalim var. Sorun yok derseniz sorun var tabiki. Akimi, akim kontrol dongunuz icin ayrilan zaman icinde olcebilmeli, gerekli kontrol algoritmalarini isletebilmeli ve nihayetinde o kanala ait pwm degerini zamanindan once pwm registerine yuklemeniz gerekir.

Merkeze gore simetrik pwm ile 6 bobine de merkezleri bir birine senkron pwm voltajlar verirseniz 6 bobinin 6 si da tam merkezde ortalama akimi akitir.

Yani pwm high oldugu anda akim rampa seklinde artarken pwm in tam ortasinda akim yapacagi delta I artisinin yarisini yapar.
Eee 6 akim da tam bu anda delta I artisinin yarisini yapacaksa 6 akimi da tam bu anda olcmek gerekir ki akimdaki rampa egimi olcum hatasina neden olmasin.

Eger her bir ADC kanalimiz kendi sample hold devresine sahip olsaydi  tam orta noktada 6 bobin akiminin o anki degerini analog olarak saklar ardindan ADC ile tek tek olcerdik. Hata da yapmazdik.

Fakat malesef STM32 dahil tum islemcilerde ADC ADC kanallarini ardisil olarak olcerler.

F103C8 her bir ADC olcumunu 1uS de yapar. Fakat Islemci USB donanimini da kullanacaksa malesef ADC yi en yuksek hizda calistiramiyoruz. 72Mhz de hem USB calissin hem de ADC max hizda calissin olmuyor.

Neyse sebebini merak eden PLL sayfasina bakar.

O zaman oyle bir uc kagit yapmaliyiz ki PWM lerin orta noktalari ust uste gelmesin. Eger orta noktalar ust uste gelmezse ADC yi soft olarak baslatabilir ya da surekli cevrim modunda birakabiliriz,

Timer 2 orta noktada int cakar 2 ADC ile o anki  iki bobin akimini olcer kontrol algolari isletir ve pwm degerlerini  yukleriz. ADC kanallarini switch ederiz ve ikinci motor akimlari olculmeye baslanir. Birazdan Timer 3 orta nokta yapar.  Bu kez ikinci motor icin o anki akim degerleri elimizde mevcut olur.

Birazdan diger timer int cakar bu kez de 3. motorun o anki akimlarini olceriz.

Yani interlive ya da pipeline diyebilecegimiz bir donanim yapisi kurmus oluruz.

Eger boyle yapmazsak tam merkezde 6 bobin akimini olcmeye kalkarsak 3 tanesi bir ADC ile 3 tanesi de diger ADC ile olculse 3. motorun akimi 3uS den daha fazla gecikme ile olculur.

Halbuki 3uS sonra akim orta noktadan 3us uzaklasmis ve akim rampasinin egiminin neden oldugu hata ile akim olculmus olur.

3us dedigim gibi en iyimser degerdir. ADC yi full speed kullanamadigimiz icin daha da buyuk olcum suresi alacaktir. 

Toplam pwm periyodunun  en iyimser durumda 62us oldugu dusunulurse 5us gecikme 3. motorda  %8 gecikme anlamina gelir.
Tum kdolamalar bitipte hala islemcinin idle durumda kaldigi zaman kaliyorsa 62us lik peryod H bridge in max frekansinkarsilik gelen peryoda kadar kisaltilir ve bu  bazen 30us ye kadar dusurulebilir. Yani 30us lik dongude 6 motor akimi denetimde tutulur, PC ile haberlesilir, vs vs

Eger motor enduktansiniz dusuk ise atik davranis sergilemek icin H kopru voltajini da buyuk tuttuysak akimdaki rampanin egimi buyuk olur. Bu da akimlarin olcumunde daha buyuk olcum hatasi yapmamiza neden olur.

O halde en az hatayi 1. motor, biraz fazla hatayi 2. motor, en buyuk akim hatasini da 3. motor yapacak demektir.

Eger pwm uretiminde motor kontrol duzenegimizde CPU daki pipeline mekanizmasinin benzerini pwm uretimi ve ADC olcumu icin bahsettigim sekilde yaparsak bu hatalardan buyuk olcude kurtuluruz.

Bahsettigim hatalara ragmen STM ile 3 step motor kontrol edilebiliyor ve isimi fazlasiyla goruyor.

Buna ragmen olusturdugum bu pipeline yapisi ile step motorlari bir segment daha iyi surmeyi hedefliyorum.

Simdi yazacaklarim gene ASM C catismasina donecektir ama tum kodlamayi ASM ile yapmak zorundayiz. Kutuphane vs ile hic olmaz.

Cunku  kuracagimiz pipeline mekanzimasina asla kaza yaptirmamaliyiz. (pipeline crash, pipe line penalty)

Bunun ustesinden de ancak ya FPGA gelebilir ya da pure assembly.

Haa siki C yazarlar da isterlerse yazmayi basarabilirler.

Z hocam kısaca pwm çıkısındaki bobine enerji verdiğiniz andaki akımı okumak içinmiş bu yazdıklarınızı yapıyorsunuz. anladığım bu doğrumu.

z

#96
Aynen.

Aslinda 3 timera ADC olcum suresi kadar gecikme yapacak kadar faz farki birakmakda cozum olabilir.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Cemre.

#97
Yapılmak istenen şey asimetrik center aligned pwm üretme özelliği olmayan bir işlemci ile asimetrik center aligned pwm üretmek mi? Yoksa ben sonradan dahil olup bambaşka bir şey mi soruyorum :D
Eğer öyleyse, daha önce bu işi Stm32f030 ile yapmıştım. Yöntemi anlatmaya çalışabilirim?


Edit: Her neyse, ben yaptığım çalışmayı şöyle bırakayım, belki birinin işine yarar.
https://disk.yandex.com/i/f7PIv22rNddsrw

benmrtild

Alıntı yapılan: z - 24 Eylül 2022, 11:08:02Aynen.

Aslinda 3 timera ADC olcum suresi kadar gecikme yapacak kadar faz farki birakmakda cozum olabilir.



hocam sizin kadar konuya hakim değilim fakat benzer bir yöntemle akım ölçmeye çalışmıştım voltaj sabit olduğu halde bobin den geçen akımını çokta iyi ölçermemdim. elektrik saatleri için bir ic vardı onla daha net değerler aldın birde pic18 ailesinde de bazı işlemciler var bu tür işler için belki onlar daha iyi seçim olabilir.

z

#99
Burda amac ayni fazdaki birden fazla ucgen dalga formundaki akimlarin ani degerini hep ayni T aninda olcmedeki zorluga cozum uretmek.

Buradaki cozum seklimiz akimlarin fazlarini kaydirmak.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

elektronik

#100
işin özeti sırayla ölçüm yapmak.
Bobin akımlarının pik noktalarını farklı zamanlara kaydırıp sağlıklı ölçüm yapmak.

Erol YILMAZ

Alıntı yapılan: elektronik - 24 Eylül 2022, 21:42:47işin özeti sırayla ölçüm yapmak.
Bobin akımlarının pik noktalarını farklı zamanlara kaydırıp sağlıklı ölçüm yapmak.

Bu kadar tantana yapılan konu bu
muymuş ?

aşağılamalar, saygısızlıklar,
Z ve atışmaktan çekinmeyen diğer arkadaş
Egonuzun boş gürültüsünü buralara kadar yayacağınıza, kendi aranızda halletseydiniz daha iyiydi.

z

Bu formda artik suyum isindi.

Kendi adima guzel zaman gecirdim.

Artik picproje sitesinde zaman kaybetmek istemiyorum.

Hakkinizi helal edin. Eger ki sizlerde hakkim varsa hepinize helal olsun.




Bana e^st de diyebilirsiniz.   www.cncdesigner.com

elektronik

Alıntı yapılan: z - 25 Eylül 2022, 00:05:22Bu formda artik suyum isindi.

Kendi adima guzel zaman gecirdim.

Artik picproje sitesinde zaman kaybetmek istemiyorum.

Hakkinizi helal edin. Eger ki sizlerde hakkim varsa hepinize helal olsun.

Yok hocam böyle birşeyi kabul etmiyoruz.
su ısındıysa hepimizi için ısınmıştır aynı sudayız.

devrecii

Hocam abartma , meyva veren ağacı taşlayan çok olur sen gidersen picproje ölür.