Picproje Elektronik Sitesi

DİJİTAL & ANALOG ELEKTRONİK => Diğer Analog Devreler => Konuyu başlatan: _MOD_ - 23 Mart 2011, 09:40:01

Başlık: 12 bit ADC
Gönderen: _MOD_ - 23 Mart 2011, 09:40:01
Selam. 3500 devirde döndürülecek bir motor var. Pic in içindeki 10 bit adc modülünü kullanınca çözünürlük yetmiyor.

12 bitlik bir adc model ve markası verebilirmisiniz?

Örnekleme zamanı 4ms den fazla olmamalı
Başlık: Ynt: 12 bit ADC
Gönderen: frederic - 23 Mart 2011, 09:42:38
MCP3204 kullanabilirsiniz,entegre üzerinde 4 adet 12 bit kanal mevcuttur.
Başlık: Ynt: 12 bit ADC
Gönderen: X-Fi - 23 Mart 2011, 11:30:26
motorun hangi değişkenini ölçeceksiniz bu adc verisiyle.
Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 23 Mart 2011, 11:53:39
Hız bilgisi. Motor bir tako jeneratöre bağlı. Takojenaratörün ürettiği gerilim 0-5V aralığına çekilip adc ile dijitale çevirilecek bir sorun olmazsa.
Başlık: Ynt: 12 bit ADC
Gönderen: X-Fi - 23 Mart 2011, 11:58:05
size bir özel mesaj gönderdim inceleyebilirsiniz.
Başlık: Ynt: 12 bit ADC
Gönderen: leblebitozu - 23 Mart 2011, 11:59:10
Dspic30 ve Dspic33 serilerinde 12 bit adc var
Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 23 Mart 2011, 12:11:33
Kontrolcü olarak 16f887 kullanıyorum. MCP3204 'ü deneyeceğim. Teşekkürler.
Başlık: Ynt: 12 bit ADC
Gönderen: Klein - 23 Mart 2011, 12:28:52
tek adc lazımsa mcp3301 kullanabilirsiniz.
Başlık: Ynt: 12 bit ADC
Gönderen: Maxim - 23 Mart 2011, 13:47:11
bir sürü 12bit adc si olan pic var

edit:
18F serisi de var
Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 23 Mart 2011, 15:25:43
Alıntı yapılan: Klein - 23 Mart 2011, 12:28:52
tek adc lazımsa mcp3301 kullanabilirsiniz.

Neden? MCP3204' de başka ne özellikler var?
Başlık: Ynt: 12 bit ADC
Gönderen: X-Fi - 23 Mart 2011, 15:30:03
4 adet 12 bit adc girişe sahip MCP3204 tek giriş kullanacaksan diye öneri olarak söylemiş arkadaş.

MCP320x sondaki 4 buradan gelir.
Başlık: Ynt: 12 bit ADC
Gönderen: ByTEK - 23 Mart 2011, 16:11:55
Merhaba Bende Projemde MCP3204 kullanmıştım lakin piyasada bulamadığım için MCP3201 kullandım. Kullanımı için 3 pin gerekli.. mcp3201 için jalv2 dilinde function yazdım eğer istersen ve onu kullanacaksan gönderebilirim.. diğer mcp3204 ve mcp3208 için 4 pin kullanılıyor.. kanal seçme için ekstradan datain adında veri gönderilen bir pini mevcut.. mcp3201 entegresini istanbulda karaköy pasajının orada bulunan turus elektronikte bulabilirsin..
Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 23 Mart 2011, 17:42:01
Bana asm kodu lazım. ADC olarak da mcp320x serisinden bulabildiğim bir taneyi kullanırım artık.

Saolun yardımlarınız için.
Başlık: Ynt: 12 bit ADC
Gönderen: drmp - 23 Mart 2011, 21:34:46
enkoder bağlasanız daha kararlı  olmazmıydı ???? ve böylece adc opamp falan filana gerek  kalmazdı
Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 23 Mart 2011, 21:50:06
Proje dc motor pid hız kontrolü.

Enkoder  nasıl çalışıyor ki?
Başlık: Ynt: 12 bit ADC
Gönderen: Klein - 24 Mart 2011, 13:27:25
PID kontrollü olması bir şey değiştirmez.  PID giriş değerine tako çıkışı yerine encoder çıkışı verirsiniz.
Encoder devir sayısını  frekans çıktısı olarak verir.   
Örneğin ,  255 pulse encoder kullanırsanız:
1 devirde 255 pulse alırsınız.  dakikada 1000 devir dönen bir motor için  dakikada 255000 pulse, saniyede 4250 pulse alırsınız. Yani 1000 devir dönen motor için encoder çıkışı  4250Hz olacaktır. 
PID girişine bu değeri veya bu değerin bir oranını verirseniz , PID de herhangi bir değişiklik yapmanıza gerek kalmaz. 
Başlık: Ynt: 12 bit ADC
Gönderen: bigbey - 24 Mart 2011, 13:44:57
Bu tip benzer projeyi bende yapmıştım.
projede 12volt dc motor kuıllandım. arkasında kendinden monte edilmiş pulse encoder vardı. motor 1 tur döndüğünde 24 pals veriyordu. motoru PWM ile hızını kontrol edip istenen devirde dönmesi sağlanıyor ve motor miline verilen yüke göre devir düşerse pwm artıyor motor devrini sabit tutmaya çaılışıyor.
Bu işlemi pulse encoderli bir malzeme ile rahat yapabilirsiniz.
Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 31 Mart 2011, 14:47:45
Motor sanyodenki marka bir motor ve yanlış bakmadıysak içine bir takojeneratör bağlanmış ve hız bilgisi ordan alınıyor. Sürerken de orayı kullanmam isteniyor.
Başlık: Ynt: 12 bit ADC
Gönderen: z - 31 Mart 2011, 15:09:30
Hızın anlık değeri kontrol altında tutulacaksa, PID nin leb demeden leblebiyi anlaması yani hatayı çok erken sezip gerekli önlemi alması için tako gerekir.

Eğer motor devrinin sondeğeri kontrol altında tutulacaksa encoder kullanılabilir. Eğer motorun örneğin yol alışındaki devir sayısı da kontrol altında tutulacaksa takodan vazgeçilemez yada çok çok yüksek çözünürlükte encoder gerekir.
Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 31 Mart 2011, 18:25:33
Hız sanırım anlık olacak. Yani referans olarak rpm değeri girilecek ve motor o rpm de dönmeye çalışacak.
Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 31 Mart 2011, 18:32:40
Bu arada bir adet mcp3201 entegresi aldım karaköyden. Aklıma takılan birşey var.

LCD den girilen 0-3500 arası hız bilgisi ikilik bilgiye çevrilecek. Motor bu bilgiye göre 0-3500 rpm arası dönecek.

Fakat adc 3500 rpm için üretilen voltajı 4098'e bölecek. Yani motor 3500 rpm de döneceği zaman adc' den gelen bilgi FFF olacak. Fakat lcd'den 3500 değeri girildiğinde bunun ikilik karşılığı DAC yapıyor. Bu aradaki uyuşmazlık nasıl giderilebilir?
Başlık: Ynt: 12 bit ADC
Gönderen: z - 31 Mart 2011, 18:34:45
Digital teknolojinin bu denli güçlü ve ucuz olmadığı dönemlerde tako bir bakıma mecburiyetti.
Şimdilerde duruma göre alternatif çözümler var. Sen en iyisi motorun uygulama alanını söyle tako gereklimi değilmi ordan anlaşılabilir.



Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 31 Mart 2011, 18:40:01
Uygulama alanı derken?   :o

Hoca proje olarak verdi  ;D
Başlık: Ynt: 12 bit ADC
Gönderen: Klein - 31 Mart 2011, 18:58:58
Alıntı yapılan: _MOD_ - 31 Mart 2011, 18:32:40
Bu arada bir adet mcp3201 entegresi aldım karaköyden. Aklıma takılan birşey var.

LCD den girilen 0-3500 arası hız bilgisi ikilik bilgiye çevrilecek. Motor bu bilgiye göre 0-3500 rpm arası dönecek.

Fakat adc 3500 rpm için üretilen voltajı 4098'e bölecek. Yani motor 3500 rpm de döneceği zaman adc' den gelen bilgi FFF olacak. Fakat lcd'den 3500 değeri girildiğinde bunun ikilik karşılığı DAC yapıyor. Bu aradaki uyuşmazlık nasıl giderilebilir?

Aradaki uyuşmazlıktan kasıt nedir tam anlamadım.  Sanırım kalibrasyondan bahsediyorsun.
Bunun için önce kalibreli bir takometre ve bir hız ayarlayıcı ile  ADC de en yüksek değeri okuduğun devri bul.

diyelim ki max 6000 RPM için ADC'den  4095 değerini okuyorsun. ADC de offset olmadığını varsayıyorum.

katsayı= kalibrasyon_hızı/kalibrasyon_hızında_okunan = 6000/4095 = ~1.465

Kalibrasyonu bir kez yaptıktan sonra artık bulduğumuz katsayıyı kullanarak motorun anlık devrini RPM cinsinden hesaplayabiliriz.

anlık hız = katsayı*anlık_okunan

motorumuz  3000 devirde dönüyor olsun. ADC'den okuduğımız değer 2048 olsun

Devir(RPM) = katsayı*ADC = 1.465*2048 = 3000,32 RPM
Başlık: Ynt: 12 bit ADC
Gönderen: z - 31 Mart 2011, 19:01:25
Alıntı yapılan: _MOD_ - 31 Mart 2011, 18:40:01
Uygulama alanı derken?   :o

Hoca proje olarak verdi  ;D

O zaman tako kullanmayı gerektiren durumlardan bahsedeyim.

- Çok düşük devir sayılarında bile kontrol gerekiyorsa,
- Geçici rejim davranışıda sıkı sıkıya kontrol altında tutulacaksa,
- Hoca, tako kullanımını şart koştuysa.

Düşük devir sayılarında encoder ile açısal hız ölçümü yapıp devir sayısını sabitlemek hele hele de stabıl olmayan mekanik yüklerde oldukça zordur.


Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 31 Mart 2011, 19:43:09
Alıntı yapılan: Klein - 31 Mart 2011, 18:58:58
Alıntı yapılan: _MOD_ - 31 Mart 2011, 18:32:40
Bu arada bir adet mcp3201 entegresi aldım karaköyden. Aklıma takılan birşey var.

LCD den girilen 0-3500 arası hız bilgisi ikilik bilgiye çevrilecek. Motor bu bilgiye göre 0-3500 rpm arası dönecek.

Fakat adc 3500 rpm için üretilen voltajı 4098'e bölecek. Yani motor 3500 rpm de döneceği zaman adc' den gelen bilgi FFF olacak. Fakat lcd'den 3500 değeri girildiğinde bunun ikilik karşılığı DAC yapıyor. Bu aradaki uyuşmazlık nasıl giderilebilir?

Aradaki uyuşmazlıktan kasıt nedir tam anlamadım.  Sanırım kalibrasyondan bahsediyorsun.
Bunun için önce kalibreli bir takometre ve bir hız ayarlayıcı ile  ADC de en yüksek değeri okuduğun devri bul.

diyelim ki max 6000 RPM için ADC'den  4095 değerini okuyorsun. ADC de offset olmadığını varsayıyorum.

katsayı= kalibrasyon_hızı/kalibrasyon_hızında_okunan = 6000/4095 = ~1.465

Kalibrasyonu bir kez yaptıktan sonra artık bulduğumuz katsayıyı kullanarak motorun anlık devrini RPM cinsinden hesaplayabiliriz.

anlık hız = katsayı*anlık_okunan

motorumuz  3000 devirde dönüyor olsun. ADC'den okuduğımız değer 2048 olsun

Devir(RPM) = katsayı*ADC = 1.465*2048 = 3000,32 RPM

Motor 3500 rpm

Demek istediğim;
lcd'den tuş takımı kullanarak girilen hız bilgisi refh ve refl olmak üzere değişkene atılıyor
adc den okunan değer de addressh ve addressl olmak üzere değişkene atılıyor

lcd' den maksimum hız bilgisini girince refh ve refl ın içerisinde DAC bilgisi olacak
motor maksimum hızda döndüğünde ise addressh ve addressl nin içerisinde FFF bilgisi olacak.

yani lcd'den girilen referans bilgisi ve adc'den gelen hız bilgisi tutmayacak gibi görünüyor


Alıntı yapılan: bunalmis - 31 Mart 2011, 19:01:25
Alıntı yapılan: _MOD_ - 31 Mart 2011, 18:40:01
Uygulama alanı derken?   :o

Hoca proje olarak verdi  ;D


O zaman tako kullanmayı gerektiren durumlardan bahsedeyim.

- Çok düşük devir sayılarında bile kontrol gerekiyorsa,
- Geçici rejim davranışıda sıkı sıkıya kontrol altında tutulacaksa,
- Hoca, tako kullanımını şart koştuysa.


Evet tako kullanmamı gerektiren durumlar  :D
Başlık: Ynt: 12 bit ADC
Gönderen: Klein - 31 Mart 2011, 20:02:30
Eğer ADC'den aldığın ham değeri kullanırsan tutmayacak. Ya ADC çıktısını devir bilgisine çevireceksin , ya da tuştakımından girilen bilgiyi PID'de işlemeden önce ADC ye uyduracaksın.
ADC'yi nasıl devir bilgisine çevireceğiniyazdım. Diğeri de ondan farklı değil.
Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 31 Mart 2011, 20:38:53
Hee ben referansla felan oynayınca olur gibi bir cevap bekliyordum. O zaman şimdi ondalıklı sayılara felan girmem gerekecek değilmi? Assembly de çalışıyorumda biraz zor oluyor.
Başlık: Ynt: 12 bit ADC
Gönderen: Tagli - 31 Mart 2011, 20:54:30
Mutlaka asm ile yazman gerekiyorsa floating point yerine fixed point kullanmayı dene. Böylece imkansızı biraz kolaylaştırarak gıcık kıvamına getirebilirsin :)
Başlık: Ynt: 12 bit ADC
Gönderen: _MOD_ - 31 Mart 2011, 20:59:44
Fixed point pid de de karşıma çıkmıştı anlamadığım için kullanmadım. Açıkcası pid' de neden fixed pointe ihtiyac var anlamadım. Microchipin örneklerinde 256 almış frekansı. Çarpması gerekince 8 bit sola kaydırıyor, bölmesi gerekince sağa.

peki referansı arttırmak çözüm olmazmı gerçekten? yani 5 V u 4096 ya bölceğine 3500 le 4096 arasındaki orana göre bir artış yapıp onu referans olarak  versek?
Başlık: Ynt: 12 bit ADC
Gönderen: bigbey - 04 Nisan 2011, 11:38:02
Alıntı yapılan: _MOD_ - 31 Mart 2011, 20:38:53
Hee ben referansla felan oynayınca olur gibi bir cevap bekliyordum. O zaman şimdi ondalıklı sayılara felan girmem gerekecek değilmi? Assembly de çalışıyorumda biraz zor oluyor.
ondalıklı sayılarda kaç hane kullanmak istiyorsun (gerekli)
16 bit 4 işlem yapan bir asm yazılımı işini görebilirmi.