I've just opened a coffee shop in Los Angeles last month, and we don't take tips. We only use self-ordering iPads (I've custom coded an iOS app w/ Stripe Terminal for it), and we don't accept cash either. We've had a few customers baffled by the no-tipping policy, and still insisting that they leave a tip. Some even left cash on the counter or on the table. We had to chase a few of them down to return their money. Al…
Just to dump an idea: Maybe instead of using a scale based rating, you could experiment with something that has not a clear maximum value to prevent the all 5-star rating effect described by others. The only thing that directly comes to my mind would be a button, that the user has to hold until the time matches the perceived rating.