Has anyone tried to build a dish positioner controller using a Raspberry Pi or similar small board c

Status
Please reply by conversation.

anik

SatelliteGuys Pro
Original poster
Aug 28, 2004
356
2
U.S.A.
I'm starting a new thread for this so as not to hijack any other thread - this really is a separate discussion.

If you search for Raspberry Pi Power Control in your favorite search engine, you will see that many people are using Raspberry Pis to control power to various devices. If you have an older C-band dish as I do, you may be a bit frustrated by the fact that none of the existing positioner controllers out there have any network connectivity, making it impossible to control them from another computer elsewhere on the network. And yet, it seems to me that someone with a bit of hardware and software experience ought to be able to control a positioner motor using a Raspbery Pi and some interface equipment.

Let's first consider what would be needed. We would need the Raspberry Pi with its power supply, and we'd need a separate DC power supply to drive the dish motor, something that puts out 36 volts DC at around 5 amps. Since we're only using it to drive a motor, I don't even think the DC supply needs to be filtered - you could probably take an AC step-down transformer that puts out the correct voltage and sufficient current, and run it through a bridge rectifier that can handle that kind of current. Then you would need a couple relays, one to actually apply power to the circuit (this could even be done on the AC side of the transformer) and one to switch the polarity to reverse the direction. The only other thing that would be needed is some kind of transient voltage suppression, so that kickback voltage doesn't fry the rectifier bridge, unless you somehow manage to pick up a bridge rectifier with a very high voltage rating. I am not an electronics engineer, so I won't comment on specific ratings for those parts, but that would be the gist of the circuitry that drives the motor.

Then we'd need a way to drive the relay coils from the Raspberry Pi GPIO pins. Typically this involves using some sort of interface circuit that requires (at a minimum) a transistor, resistor, and a rectifier to absorb the kickback voltage from the relay coil. Such circuits are shown on numerous pages on the web. For switching the AC side of the transformer you could even use a triac-based circuit driven from an optoisolator, to protect the Raspberry Pi somewhat. An inexpensive commercial circuit board that might be useful for that purpose is this one.

And then we'd need a way to read the pulses from the sensor in the positioner. As I understand it, these are simple contact closures, so all you would need is to connect those wires to the +3.3 volts and one of the GPIO pins on the Raspberry Pi, perhaps with a current limiting resistor and something to absorb any transient voltages that come down the line (such as induced current from the motor wires) so those can't fry your Raspberry Pi. To be really safe, you could use some kind of opto-isolator and drive it from a separate power supply.

If all you want is to have the computer control the movement of the dish, for example on a particular schedule, then everything else could be done in software. On the other hand, if you want a receiver to also be able to control the dish, then you would need some way to decode the DiSEqC signals output by the receiver. I have no idea how that it accomplished, but perhaps someone else does.

I only bring this up because none of the current crop of controllers seem to be network aware. Even the new Titanium Satellite ASC1, discussed in another thread, does not offer any kind of network interface at all (if it did, it would be the perfect controller!). But with a Raspberry Pi and the proper hardware and software driving the dish, you could change the dish position any way you can envision, from a simple cron job to move the dish at a particular scheduled time, to a fancy web-based interface. Unfortunately, actually building hardware is not my forte; I am real good at liberating the trapped smoke from electronic components, but not so great with the intricacies of circuit design. Still, this seems like it should be a pretty simple circuit for anyone that has even moderate experience with this sort of thing.

So, has anyone ever attempted to build anything like this? And also, does anyone happen to know how to read and/or generate the DiSEqC signals used to control a positioner using a Raspberry Pi, or similar single board computer?
 
The ASC1 has a serial port that can probably be interfaced to the Raspberry Pi. Then, you'd only have to write a control program to run it. I'm sure somebody here will do it eventually.

That would be the easiest way to not have to re-invent the main working part of your device. Or perhaps even a V-box could be hacked to tie in a RP. Since the V-box 7's go for around $35~, you wouldn't be out much money if it didn't work.
 
I was trying to find those with interest when i started a PI thread back last year . i knew that you could set one up fairly easily (no i havent done it) and i knew the RS had a plug in modual that could be used to supply up to 48 volts on up to 6 channels ... just no one seemed interested

I thought it could be configured to move the motor at 36 volts , skew the corotor at 5 volts and basically be the Home Theater
but even though newer equipment has shown up, it would probably be trying to reinvent the wheel.
 
I was trying to find those with interest when i started a PI thread back last year . i knew that you could set one up fairly easily (no i havent done it) and i knew the RS had a plug in modual that could be used to supply up to 48 volts on up to 6 channels ... just no one seemed interested

I thought it could be configured to move the motor at 36 volts , skew the corotor at 5 volts and basically be the Home Theater
but even though newer equipment has shown up, it would probably be trying to reinvent the wheel.

My biggest issue is that I'm not really proficient at building electronic circuits, so I was hoping that perhaps someone who is (maybe one of the amateur radio operators in the crowd, if there are any here) might take an interest in something like this and publish their results. Other than not having the slighted clue how to get the DiSEqC signals from the receiver and translate them into something useful (EDIT: But see this thread), the rest of it almost seems like a piece of cake - in fact the hardest part would be keeping an accurate count of the pulses coming from the positioner. Anyway, it's not a matter of not having the interest, it's a matter of not having the skills.

The ASC1 has a serial port that can probably be interfaced to the Raspberry Pi. Then, you'd only have to write a control program to run it. I'm sure somebody here will do it eventually.

That would be the easiest way to not have to re-invent the main working part of your device. Or perhaps even a V-box could be hacked to tie in a RP. Since the V-box 7's go for around $35~, you wouldn't be out much money if it didn't work.

Well, one thought that occurs to me is that if you could get the Raspberry Pi to send infrared pulses that mimic the remote control's functions, then the VBOX could keep track of the current position of the positioner, and all the Raspbery Pi would need to do is tell the VBOX which satellite it needs to go to. The only problem with that scheme would be that there would be no way to get feedback back from the VBOX, so you couldn't tell if the dish actually moved or not. Although, I suppose it wouldn't be too hard to sense where any current was being sent to the motor (a relay with a 36 VDC coil across the motor contacts would at least give you a switch closure), so at least you could get some indication of whether the motor started turning after the command was sent. The problem would be mapping the infrared pulses sent by the VBOX remote and then emulating them through an IR transmitter hooked to the Raspberry Pi. Since I don't presently have a VBOX 7 I can't really speculate more than that.
 
Last edited:
A Vbox already does all that stuff automatically, when connected in-line through the receiver coax going to the lnb. After the Vbox and the receiver are taught once where each satellite is, that is. The fta receiver issues the command to "goto whatever position", and the Vbox turns the dish and sends it there. My MicroHD every Friday night has a timer to go to 'My Family' on 87W at 11:30pm, and record "Buck Rogers" for 1/2hr. When the timer fires, the dish moves from where it is all by itself to 87W, tunes in the channel, and starts recording. Works perfectly everytime.

No need at all to connect the RP device for just that.
 
Last edited:
A Vbox already does all that stuff automatically, when connected in-line through the receiver coax going to the lnb. After the Vbox and the receiver are taught once where each satellite is, that is. The fta receiver issues the command to "goto whatever position", and the Vbox turns the dish and sends it there. My MicroHD every Friday night has a timer to go to 'My Family' on 87W at 11:30pm, and record "Buck Rogers" for 1/2hr. When the timer fires, the dish moves from where it is all by itself to 87W, tunes in the channel, and starts recording. Works perfectly everytime.

No need at all to connect the RP device for just that.

You're right about that. The reason I was thinking about this at all was that someone had expressed a desire to have multiple tuners and still have a way to control the dish (presumably not being tied to any single tuner). But also, since there are at least a couple of people expressing doubts about the reliability of the VBOX in another thread (one of whom makes a competitive product), it just occurred to me that making one's own positioner control circuit might not be that hard, and having a network connection would open up possibilities not otherwise available (for example, being able to query your dish from anywhere and find out which satellite it's currently pointed to).

But you are absolutely right, if you only have a single tuner and you use that to control the positioner, then for most people adding a Raspberry Pi to the mix would be kind of superfluous.

Sometimes you don't really know how you'd use a feature until you have it available. ;)
 
I currently use my arduino to control my actuator, never did make a diseqc interface for it, I just use serial over usb. Im guessing total cost was around $40 with the laptop power supply. You could use a RPi if you wanted the network interface, but an Arduino is much simpler and cheaper if you dont need it.

UDL
 
I currently use my arduino to control my actuator, never did make a diseqc interface for it, I just use serial over usb. Im guessing total cost was around $40 with the laptop power supply. You could use a RPi if you wanted the network interface, but an Arduino is much simpler and cheaper if you dont need it.

UDL

Good point updatelee, but if I were going to attempt this I would specifically want to be able to control it over my local network, particularly if it doesn't have a DiSEqC interface. And that's why a Raspberry Pi would be my first choice, since it does have the network interface built in, and also because I could probably use it for additional tasks that may or may not have anything to do with satellite TV. Of course, some people combine a Raspberry Pi and an Arduino to accomplish specific tasks, but since the Raspberry Pi has its own GPIO pins, I'm not sure if there's any advantage to doing that.

Just out of curiosity, have you published any details or schematics of your interface online anywhere?

By the way, should you ever get the bug to add DiSEqC to your interface, you might want to take a look at N0QBH's recent thread, if you haven't already. I don't know if you could adapt any of what he's done to your project, but he's the only person I've seen on this forum that actually seems to know how DiSEqC works AND is willing to share that knowledge generally. And both he and you doubtless have a lot more knowledge of this sort of thing than I do.
 
You should be able to find the schematics I used on my blog, ill check when I get home.

I've seen the thread you mentioned, I just never got around to implementing diseqc. Always something more important going on. I seem to keep myself pretty busy.

The advantage to the arduino is it's very simple. The RPI will be much more complicated todo the same task. They can both accomplish a simple task of moving a dish.

UDL
 
Thanks, guys. Very interesting.

UDL did you ever figure out what caused the sparks and smoke?

I know if I was switching a high amperage circuit, my preference would definitely be to use mechanical relays - probably one to switch the power to the positioner, and the other a DPDT relay to reverse the polarity (to change the direction of travel). And I would want those relays as isolated as possible from the rest of the circuit. But then again, if the motor will pulsating DC (rectified but not filtered), it might be possible to get away with using an optoisolator circuit to switch the power, with a triac doing the heavy current switching. No idea if that would work since the voltage across the triac has to go to zero for it to release correctly (which as you probably know usually happens at the zero crossing point of an AC waveform). The only way I know of to reverse the polarity safely would be using the DPDT relay, though.
 
The H-bridge Im using is only rated for 2.5amps. Thats pretty close to tolerances. I was using a 36v power supply rated at 10amps. I switched from full speed one direction to full speed in the opposite direction. It was a bad call. lol.

Now I use PWM to ramp up power and induce a 200ms delay before actually engaging power. Never had a problem since.

Im not a fan of relays, motor's can have a pretty high startup current and mosfets let you control how you handle that. PWM is the simplest method, but not the best. A better way is to have a current sense resistor inline and monitor the current being used by the motor and dynamically adjust the voltage to control the current. I just never bothered to implement it.

The hardware side of things doesnt interest me anywhere near as much as software development and there is only so much free time. I never started the project to create the perfect actuator controller, I just needed something to move my dish that could be controlled remotely. Im more often then not infront of my development box. I kinda got that project to the point where I could use it and havent touched it since.

UDL
 
Hi,
Did you made it finally?

I'm trying to do something similar but different, I have an actuator for a satellite dish, the MOT-SAT3 that supports DiSEqC 1.2 mode, USALS mode and the "Go to X" mode.
And what I want to do is use the raspberry pi 2 (I have the gertboard also) to encode the "Go to X" somehow to the coaxial wire and be able to move the actuator.
Any idea how I can do that?
Thanks in advance!
 
Hi,
Did you made it finally?

I'm trying to do something similar but different, I have an actuator for a satellite dish, the MOT-SAT3 that supports DiSEqC 1.2 mode, USALS mode and the "Go to X" mode.
And what I want to do is use the raspberry pi 2 (I have the gertboard also) to encode the "Go to X" somehow to the coaxial wire and be able to move the actuator.
Any idea how I can do that?
Thanks in advance!
I have not seen very much work with the Raspberry Pi, but I have been working on a solution with an Arduino.
In my opinion, an Arduino (or just an Atmel micro-controller chip), or PIC is better suited for this.
A Raspberry Pi has more overhead, and waiting each time for the OS to boot up. With a micro-controller there is no OS, just a small quick boot-loader so it virtually instant on. Also no OS to crash or lock up from time to time.
Also very little I/O is needed for a simple solution. :)
 
The thing is that the input to know the x of the actuator will be given through a Web API, thats why it has to be a Raspberry pi, also I have the Raspberry pi, not an Arduino. But yes, I can easily get one, but I will be at the same point, I have no idea how to encode the "Go to X", I can not even find where is it specified.
 
The thing is that the input to know the x of the actuator will be given through a Web API
Very interesting. Tell me more about how you are doing this. Are you going wireless from the dish back to the receiver?
 
Status
Please reply by conversation.

DW HD

It's the trees, not my dish. Right?

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Who Read This Thread (Total Members: 5)

Latest posts