Güzel bir proje. İşte birkaç ipucu, ancak bunu her proje için genelleştirmek zor olacaktır.
Hesaplama gereksinimleriyle başlayın
Bu, ne tür bir çekirdeğe ihtiyacınız olduğunu ve MCU'nun genel performanslarını size söyleyecektir. Bununla başlamanızı öneririm, çünkü çevre birimlerinin aksine harici bileşenler kullanılarak genişletilemez.
İlk olarak, döngü içinde büyük tamsayılarla ağır matematiksel işlemler kullandığınız anlaşılıyor. Bu nedenle, önerdiğiniz gibi, 32 bit burada yararlı olacaktır, bu nedenle ARM ideal bir aday olarak gelir. Çalışma sıklığına gelince: şu anda bir Arduino MEGA2560 kullanıyorsunuz (16MHz'de çalışıyor, sanırım) ve 10 döngü / s yapabilirsiniz. 100 döngü / s elde etmek istiyorsanız, 100MHz veya daha fazla bir Cortex-M3 / M4 ile iyi olmalısınız (kaba tahmin). Cortex-M4F'nin bir kayan nokta birimine sahip olduğunu unutmayın.
Seçimi zaten daralttık.
Bellek gereksinimleri
Bu kolaydır: prototip için aralığının en fazla RAM / Flash'ına sahip MCU'yu seçin. Prototipi doğruladıktan sonra, tam gereksinimlerinizi bildiğiniz için, yeterli RAM / Flash'a sahip olan aynı aralıktan MCU'ya geçin.
Uygulamanızın inanılmaz miktarda belleğe ihtiyacı olmadığını düşünüyorum.
Şimdi, çevre birimleri
Kesinlikle biraz ADC'ye ihtiyacınız var. İncelediğimiz aralıktaki tüm MCU'ların bir kısmı var, bu yüzden yararlı bir kriter değil. Dijital giriş / çıkışlar da çok fazla değildir (çok fazla sayıda ihtiyacınız olması dışında (sizin durumunuz gibi görünmüyor).
DAC'a ihtiyacınız var gibi görünüyor. Ancak, bu aslında kolayca bulamayacağınız ve adayları çok fazla daraltacağınız bir şeydir. Yani bu şartı tutmuyoruz ve bir PWM ve lowpass (kesinlikle kabul edilebilir) ile kalacağız.
LCD dışında herhangi bir iletişim arabiriminden bahsetmezsiniz (daha sonra). Her neyse, tüm MCU'larda I2C / SPI / UART / ... var.
LCD
Bu daha zor, çünkü MCU'ya tamamen farklı gereksinimleri koyan birçok farklı çözüm var. Ancak MCU'ya bağlı olarak LCD'yi seçmeyin. Ürününüz için istediğiniz LCD'yi seçin ve ardından verimli bir şekilde çalıştıracak MCU'yu seçin.
- Bir karakter LCD'si istiyorsanız: MCU için en kolay ve en az kısıtlayıcı, bazı seri arabirimler (genellikle SPI) aracılığıyla onunla konuşmaktır. Bu şekilde çok fazla PIN kullanmaz, daha küçük / daha ucuz MCU'lar kullanabilirsiniz ve hız bir sorun değildir.
- Grafik TFT LCD istiyorsanız: küçükse, seri bağlantı hala uygun olabilir. Bununla birlikte, 320x200 veya daha büyük sürümler için ve hoş bir grafik arayüze sahip olmak istiyorsanız, paralel arayüzle iletişim kurmak isteyeceksiniz. Bu durumda, ya bir GPIO kullanırsınız (ancak MCU'ya daha fazla yük katar, çünkü kontrol hatlarını bitirmek zorunda kalacaksınız) ya da özel bir LCD arayüzü olan (genellikle aynı harici bellek arayüzü). Bu sonuncusu MCU seçiminde güçlü bir kısıtlama getiriyor, ancak başka güçlü kısıtlamalarınız yok, bu yüzden ...
Şimdi sen seç
ST Micro / NXP / Atmel web sitesine gidin ve MCU seçim araçlarını kullanın. Veri sayfalarını okumak için de çok zaman harcayacaksınız. Bu zamanı al. Boşa gitmiyor. Burada öğreneceğiniz her şey, özellikle bu proje için kullanmasanız bile, yararlı olabilir.
Bu noktada, gerçekten ihtiyacınız olan PIN sayısına da bakmanız ve ihtiyacınız olan tüm PIN işlevlerini kullanabileceğinizi doğrulamak için seçilen MCU adaylarının çoğullama şemasını kontrol etmeniz gerekir. Çünkü açıkçası, MCU'ları gereksinimlerinizi karşılayan en düşük sayıda pime sahip olmak isteyeceksiniz (maliyet / PCB gayrimenkul nedenleriyle).
Fiyat / fiyat ve Mouser / Digikey Ama burada özellikle pahalı bir şeye ihtiyacınız yok. Belki 5 € ya da öylesine.
LCD kontrolü ile ilgili son şey
LCD'nin güncellenmesi ana döngünüzün bir parçası gibi görünüyor. Olmamalı. Özellikle saniyede 100 kez dönüyorsanız, işe yaramaz. Kontrol döngüsünü her şeyi hesaplayın ve her yinelemede motor komutunu ayarlayın, ancak değerleri bellekte bir yerde görüntülenecek şekilde güncelleyin. Ardından, daha önemli bir şey olmadığında, daha düşük önceliğe sahip başka bir döngü bu bilgileri kullanıcıya gösterir.
Evet, ideal olarak, görev değiştirme ve benzeri şeyler gerektirir. Gerçek bir işletim sistemi, aslında (FreeRTOS, Coocox OS, Nuttx, ... aramaları çok küçüktür, büyük ölçüde Cortex-M'de kullanılır ve gerekli çoklu görev mekanizmalarını sağlar).