Sign in to follow this  
Followers 0
terjeio

Multimedia Center

14 posts in this topic

My (crazy) project is getting closer to completion so time to start a project topic. I have verified my Tiva C based controller design and are now waiting for PCBs - will arrive from China in a few days.

 

My background is from Radio/TV servicing and medical electronics, but for the last 25 years I have mainly been working on a large database application written in OpenEdge. Two years ago my preamp that I made some 30 years ago started to fail due to the rubber based switches rotting (a bit like my brain these days...). Since I did not want to buy one I decided to make a new - again with no mechanical parts in the audio path. A lot has happened since back when I was involved in electronics, and I have spent some time doing research for what components are now available - to many one may argue.

 

I decided to use a CPLD programmed in VHDL for the switching logic, high quality analog switches (my original design employed 40 series CMOS for these) and a VCA (voltage controlled amplifier) for volume control. I did not want to introduce a MCU because I believed I would get into trouble with the clock signal interfering with the audio... Anyway, my new design was successful and has now been in service for nearly two years.

 

After doing this I took an interest in learning about microprocessors again, I started out with Atmel/Ardouino and Energia but I found that combination a bit lacking - no easy way to do debugging was a showstopper for me. I found the TI processors more appealing, CCS allows me to get my hands dirty on "bare metal" and a decent debugger makes life easier.

 

So, here I am making another iteration of my preamp - this time involving no less than four TI processors. I have decided to post my project under the Tiva C header since it is the main workhorse, but the three other MCUs are 430s.

 

Ok, enough rambling - here are the main components I have designed:

 

Raspberry PI power switch - PC-style startup/shutdown, may be controlled over I2C or from a front panel switch.

 

IR Remote Control - RC5 protocol.

 

Main controller - Tiva C based, custom UI library and support for Keystone DAB radio.

 

Preamp board, 5 line inputs with the option of switcing one to phono (magnetic cartridge - vinyl is getting popular again), DAB option, I2C control and still a VCA based volume control.

 

I have recently switched to KiCad as my EDA, I did use Zenith PCB earlier but I am a bit scared to continue using that as it is licensed on a yearly basis (even if it is free) - who knows when it wil not be supported anymore. KiCad is open software and does not suffer from any limitations to number of pins or board size.

 

Attached are the design files I have made for the Preamp board - the design is still to be verified, I will do that when I see how the controller board works out when arriving from the fabricator.

 

post-45966-0-88053400-1445014168_thumb.png

3D view from my KiCad design - I am too lazy to make my own 3D files so it is somewhat incomplete. There is a TI processor hidden on the bottom side, as is the KeyStone radio module.

 

If everything goes to plan I will post about the bits and pieces that makes up the complete project. I even have mechanical design files (Vectric format) that may be used to make files in order fabricate the enclosures on a CNC-machine.

 

Ok, enough for this time.

 

Terje

 

PreAmpBoard.zip

oPossum, bluehash, chicken and 2 others like this

Share this post


Link to post
Share on other sites

PCBs for the controller has now arrived from China, no routing errors! However I have some problems with the KeyStone DAB-module, I cannot get it to respond like the development board which works flawlessy - not good. The DAB module is on the preamp board, I have to delay sending it off for fabrication this until this is resolved.

 

The controller is performing well, her are a few pics - code will follow later when I am happy with it:

post-45966-0-65455100-1446488560_thumb.jpg

 

Frame is milled from 10mm solid aluminium.

 

post-45966-0-48846100-1446488645_thumb.jpg

 

Assembled controller board, touch sensors are home-made - a bit of black art to get them working reliably when embedded in the aluminium block.

 

post-45966-0-38636500-1446488758_thumb.jpg

 

Not too bad for beeing a prototype, I have to allow for some adjustment of the "wheel" - or find a way to perfectly align the alu block after turning it around to mill the front.

yosh, timotet, Fmilburn and 1 other like this

Share this post


Link to post
Share on other sites

Neat project!  Do you have any more pictures of how you did the dial?

 

Sorry, I do not have any. I am using Vectric VCarve and Cut2D for design and GCode generation. For the rounded 3D profiles on the touch buttons and the dial I used AutoDesk 123D in combination with Vectric VCarve. My mill is homemade and it is the main tool allowing me to do this kind of work - also great for drilling PCBs. I can make the files available - but I am unsure how many of you that have access to a mill and the software I use, so maybe they are of limited value?

 

I am going to build a few more for some friends when time permits, I can document how I make the parts then.

Share this post


Link to post
Share on other sites

Radio module is now up and running, I had used a 10K resistor instead of 1K for pulling up the battery detect pin. Great help from JP at MonkeyBoard Support!

 

I have been thinking about how to publish the source code for best giving back to the community - there are several components I believe can be of use in other projects so perhaps it is wise to split it in parts. It is already split in several libraries: a modified LCD driver based on RobGs code, DAB module communications layer, UI library... The main code is also split in several files, separating it into logical blocks of code. I am using Subversion on my own server for source code control, I will not move to GitHub - but maybe it is possible to duplicate parts of my repository there without too much effort. It also a question of how much work I should put into this, will there be any interest in this project?

 

For now, here is main.c - not much code:

/* * main.c - Huracan Mk III Controller * * v1.0 / 2015-11-03 / Io Engineering / Terje * *//*Copyright (c) 2015, Terje IoAll rights reserved.Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:

Share this post


Link to post
Share on other sites

Finally got around to write a touch driver, it supports XPT2046 (and thus implicitly ADS7843?). I am not entirely happy with it as I had to slow down the sampling rate a lot to get consistent results, may be due to the display itself (noise?). Calibration code is by Carlos E. Vidales and routine for finding the median by Nicolas Devillard. I have modified my UI library to work with this as well, it requires a modified version of RobGs driver for Tiva C.

 

post-45966-0-25191800-1455985788_thumb.jpg

 

post-45966-0-77972500-1455985796_thumb.jpg

 

 

bluehash and Fmilburn like this

Share this post


Link to post
Share on other sites

On the touch screen noise, two small capacitors on the lines you're measuring might help. Depending on the capacitor size, you will have to wait a few ms after applying power before reading the analog value.

Share this post


Link to post
Share on other sites

@@Fmilburn - the driver is for lcd screens with a XPT2046 or ADS7843 resistive touch screen controller. The touch sensors I made myself is still not working properly, too sensitive and seems to be a tad temperature dependent as well. For these I am using  Atmel AT42QT1011 & 12 touch sensor ICs, I guess I have to try different values for the sample capacitor. Since the prototype is in daily use and is working well I will do the testing when I make the next one - this because I have to completely dismantle the assembly to get access to the caps.

 

@@chicken - not easy to add caps to thd lcd screen pcb, since I have only tested my driver with one (chinese) display it may be a bad one?

 

If anybody want to try the code I can post it here - it is basically a simple drawing program, after calibration one can draw on the screen with one of a few different colors selected by pressing a button on the screen.

 

post-45966-0-90471000-1456174430_thumb.jpg

 

Touch sensors in top of picture, milled from acrylic. The wire is soldered to a small metal plate in a pocket in the clear acrylic.

Maybe I should have placed the touch sense caps on the other side of the PCB for easier access?

Fmilburn likes this

Share this post


Link to post
Share on other sites

OK, interesting.  I have been sketching out a design having buttons integrated on the pcb,along the lines of this TI design.  I haven't investigated anything like the AT42QT1011.  Great work by the way...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0